![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
Piszę ten wątek tutaj ponieważ nie pasuje on chyba na php pro gdyż jego tematyka jest zbyt swawolna, a php to już nie to.
Ostatnio sporo myślałem nad systemem php.pl i doszłem do wniosku, że cały system (a raczej kontrola jądra nad modułami -> bezpieczeństwo) będzie w dużej częsci polegała nie na funkcjonalności jądra, ale na zauwafniu, że nikt z develeperów nie będzie umieszczał tam (w kodzie modułów) koni trojańskich ani nic takiego. Mówie tutaj, że jakiś moduł zamiast proszenia BSP o plik sam go sobie weźmie za pomocą sql-layer (tak to bede nazywał) zdobytej przez funkcje global. Może nie byłoby tak z samym systemem ale np. nieoficjalne wtyczki... Wtedy z pomocą przyszedł mi matrix 2 (sam nie wiem czy był taki nudny, że miałem czas pomyśleć spokojnie, czy wyciągnąłem wnioski z samego filmu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ). Co prawda system (matrix) dał się złamać, ale oglądając go doszłem do pewnych wniosków jak dać jądrze kontrole nad aplikacją. W sumie doszłem do takiego wniosku. Jeżeli chcemy wiedziec co robi aplikacja (mówie ogólnie, w naszym przypadku moduł), czego używa a czego nie i jeszcze na dodatek to wszystko kontrolować, to aplikacja musi działać o poziom niżej w hierarchi od jądra. Innymi słowy aplikacja nie powinna być wykonywana przez parser języka (w naszym przypadku php), ale przez naszą aplikację. W ten sposób każda czynność, każda linijka kodu mogłaby być sprawdzana pod kontem niebezpieczeństw. Teraz następny problem. Ale jak to zrobić? Ano jak w temacie trzeba napisać własny język. Myślałem o tym. Nie pisałem jeszcze własnego języka i nie mam w tym doświadczenie, ale wymyśliłem jak mógłby wyglądać taki język naprzykład stworzony w XML'u. Pokarze tutaj jak wyobrażam sobie taki "hello world" dodatkowo ze sprawdzaniem parametru z GET'a. php:[php:1:adb267e0b1]<?php if( $_GET['say']==1 ) { print "Hello World"; } else { print "I won't say hello to you"; } ?>[/php:1:adb267e0b1] Własny język w XML'u: Kod <application> Nie wiem jak tam z moją angielszczyzną, ale mam nadzieje, że założenie jest zrozumiałe. Teraz w XML'u możemy każdą instrukcję sprawdzić i dopiero potem wykonać. Można by było definiować obiekty, a nawet np. stworzyć jezyk obiektowy za pomocą znaczników typu <math:sqrt><int>9</int></math:sgrt>.
<if> <warunek> <equal> <param source="get" name="say" /> <int>1</int> </equal> </warunek> <then> <out> <text>Hello World</text> </out> </then> <else> <out> <text>I won't say hello to you</text> </out> </else> </if> </application> Teraz moja największa obawa. Wydajność... Jak by to działało pod względem szybkości. Przy moich założeniach, że każde rozszeżenie poza standart (core) byłoby includowane specjalnym znacznikiem (jak use w perlu, import w pythonie czy dl w php) pamięc nie byłaby zbytnio obciążona. Takie coś wcale nie jest trudne do wykonania a daje olbrzymie możliwości, jak całkowia kontrola aplikacji instruckja po instrukcji i np. Jeszcze można np.dodac obsługe userów (napisane w php, jako część języka, a potem sprawdzać czy user ma dostęp do wykonywania określinych instrukcji), BSP (z poziomu języka nie można byłoby mieć dostępu do normalnego systemu plików) i można byłoby zboduwać naprawdę potęrzne środowisko do pisania aplikacji w których ważne jest to, że nie mamy całkowitego zaufania do kodu źródłowego. Wow, ale tekst wyskrobałem. Bardzo proszę o komentarze (jeżeli komuś będzie się chcuało to czytać) ponieważ dużo o tym myślałem i jestem ciekwa co Wy o tym sądzicie. Jeżeli są jakieś niejasności to pytajcie (ja mam wizje i wiem o co mi chodzi ale Wy nie jesteście mną (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ). |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ad. 1. Co do dokumentacji takiego języka to oczywiście, że trzeba by było coś takiego zrobić (niestety, jakby dokumentacją nie mógł by być kod języka (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) ).
W sumie taka dokumentacja mogła by wyglądać tak: Kod <application> - znacznik rozpoczynający aplikację
<if> - początek pętli if() <warunek> - znacznik zawierający sprawdzenie warunku zawartego w znaczniku <if> Ale aby dorównać funkcjonalności php, trzeba by opracować tysiace takich znaczników, napisać parser - a to na pewno zajmie trochę czasu... Cytat Ad. 2. Czemu wyważanie otwartych drzwi. Nie znam sposobu kontroli skryptu w php. Jeżeli wykonuje się pewna część skryptu to się wykonuje i nie ma możliwości jej kontroli.
Chodzi o to, że twórcy php nieustannie dokładają starań, aby język był jak najbardziej bezpieczny. Ale zawsze znajdzie się ktoś, kto obejdzie te zabezpieczenia. Tak samo moze być w przypadku Twojego języka. Cytat Ad. Sorry, Jabol. Każdy pomysł wymaga odpowiedniego nakładu pracy, niestety jedne więcej inne mniej.
Nie lepiej dobrać zaufane osoby? Przecież wystarczy kontrolować kod, czy ludzie nie robią jakiś świństw, a jeżeli tak, to kasować te rzeczy a ludzi usuwać z listy. Oczywiście zawsze znajduje się jakaś czarna owca, która tylko myśli jak coś spieprzyć innym. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 17:50 |