Odczarowujemy PHP – fakty, mity i plotki

geek.justjoin.it 2 lat temu

Skoro skusił Cię ten tytuł to znaczy, iż albo jesteś zagorzałym fanem Javy, albo będziesz szukał tutaj argumentów, które przekonają Twojego szefa i kolegów, iż to wcale nie jest taki zły język.

Programuję w PHP (i w Rubym, Pythonie, JSie, Lua) od 13 lat. Pamiętam czasy zamierzchłe – architekturę spaghetti, a choćby lasagne – warstwowy monolit oraz ravioli – mikroserwisy. Wracając myślami do przeszłości mogę z pełnym przekonaniem powiedzieć, iż robiliśmy to wiele lat źle. adekwatnie to nie wiedzieliśmy jak to robić, a informacje z Zachodu docierały rzadko lub wcale. Genezą tego problemu jest fakt, iż nigdy nie braliśmy PHP na poważnie. “Przecież to język do robienia stronek” – grzmieli Javowcy, Pythonowcy i wszyscy, którzy nie napisali choćby linijki kodu w PHP.

Język tylko do “robienia stronek”?

Mówisz “PHP” i być może myślisz “Wordpress, Drupal, Joomla”, tymczasem nie jest to jego jedyne zastosowanie. Zanim przejdziemy do szczegółów i analizy tego, co potrafił PHP kiedyś i co potrafi teraz, skupmy się na krótkim przedstawieniu, kto używa PHP.

Chyba największą firmą, która używa PHP w 2022 r. jest Facebook. Mieli oni ogromny wkład w rozwój wydajnościowy języka. Zaczęli od swojej implementacji – HipHop for PHP. Był to translator PHP do C++ kompilowany przez GCC. Projekt został zastąpiony przez HHVM, czyli HipHop Virtual Machine, a z niego ewoluował nowy język – Hack, którego składnia opiera się o PHP. W czasie, gdy HHVM przeżywał swojego rodzaju hype, Symfony Framework było w pełni kompatybilne z tą implementacją interpretera. Jednak świat stanął na głowie wraz z wydaniem PHP 7.0 – różnice wydajności były praktycznie niezauważalne, porzucono więc utrzymywanie kompatybilności z HHVM w Symfony. Jedna firma to nie powód, by przestać hejtować “pehapa”? Skarbnica wiedzy o wszystkim – Wikipedia również go używa.

Zanim rozprawimy się z faktami i mitami na temat PHP, pomyśl też o progu wejścia “w technologię”. W PHP bierzesz interpreter (albo jakiś zintegrowany “one-click” serwer typu XAMPP), możesz napisać kod w notatniku, nic nie kompilujesz, otwierasz Firefoxa, wpisujesz “http://localhost/” i BANG! – działa. Każdy dzieciak jest w stanie napisać swoją niebezpieczną stronę WWW.

PHP jest niebezpieczny

A czy którykolwiek język jest? Problem nie tkwi w języku, a w nieumiejętnym jego używaniu. Faktem jest, iż wiele internetowych poradników powinno zniknąć z Internetu. Jednak, czy w Javie nie da się zrobić SQL Injection? Oczywiście, iż się da. W każdym języku się da.

Wiedziałeś, iż 75% publicznie dostępnych stron w internecie jest obsługiwanych przez PHP (tak, tak – język do stronek). Są to miliardy wektorów ataku i różnych podatności wygenerowanych przez samych programistów. Ciężko zatem porównywać jabłka do gruszek, ponieważ język sam w sobie w ciągu ostatnich kilku lat nie zaliczył poważnej wpadki. Nie można tego oczywiście powiedzieć o popularnych paczkach

Sporą wpadkę, biorąc pod uwagę reputację i popularność, zaliczył pakiet PHPUnit służący do testów jednostkowych, gdzie możliwe było (przy złej konfiguracji serwera WWW) uruchomienie zdalnego kodu. Dla chętnych wrażeń: klik.

Nie martwcie się jednak wszyscy zatroskani – pakiety dla Javy również zaliczają spektakularne wpadki!

Osobnym wątkiem bezpieczeństwa interpretera jest błędnie skonfigurowany serwer HTTP oraz interpreter PHP. Większość podatności wynika z tego, iż proces interpreta był uruchomiony na użytkowniku z szerokim zakresem uprawnień (root? O zgrozo!) lub faktu, iż serwer HTTP potrafił serwować pliki, których absolutnie nie powinien.

Werdykt: MIT.

Idź do oryginalnego materiału