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.