13 błędów, których programista PHP popełniać nie powinien
PHP pozwala na budowanie w prosty sposób aplikacji sieciowych, ale mimo tego wydajność tworzonych za jego pomocą programów często pozostawia wiele do życzenia. Bez względu na wiedzę i doświadczenie programisty każdy kod PHP powinien być poddany testom typu white box, zwłaszcza jeśli chodzi o testy statyczne i dynamiczne, a także pokrycia kodu. Spowodowane jest to tym, że wiele problemów zauważanych jest dopiero w wyniku podania pewnych niestandardowych danych wejściowych, których programista nie przewidział podczas pisania. Pokazujemy, jakie błędy nagminnie pojawiają się w skryptach oraz w jaki sposób je poprawić.
1. Register globals
Register globals jest jedną z najbardziej znanych i rozpoznawanych opcji konfiguracyjnych PHP. Włączona powoduje, że parametry przekazywane do skryptu będą automatycznie rejestrowane jako zmienne globalne. Konsekwencją tego może być nadpisanie krytycznych dla danego skryptu danych. W dużym uproszczeniu problem można przedstawić, podając do skryptu parametry o nazwach używanych wewnątrz kodu, np. http://www.mojserwer.pl/index.php?Is_Admin=1
if ( $Is_Admin == 1) echo 'Jesteś administratorem'; else echo 'Nie masz wystarczających uprawnień';
W nowszych wersjach PHP opcja ta domyślnie jest wyłączona.
2. Wykonywanie poleceń systemowych
W przypadku PHP, zanim przystąpimy do pisania kodu, powinniśmy zwrócić uwagę na kilka punktów jego konfiguracji. Najbardziej newralgicznymi punktami są takie ustawienia, jak safe_mode, open_basedir i opcje z nimi związane.
Safe_mode (tryb bezpieczny) umożliwia dostęp do plików, których właścicielem jest właściciel wykonywanego skryptu, i określa dostęp do wybranych poleceń systemowych uruchamianych z poziomu PHP, a także zmiennych systemowych. Druga opcja – open_basedir – umożliwia nam założenie blokady na dostęp do zawartości folderów powyżej ustawionego. Zabezpieczy nas to przed próbami przejęcia krytycznych plików serwera (np. passwd).
W wypadku, gdy nasze skrypty muszą wykonywać polecenia takie jak exec, system, shell_exec czy passthru, należy starannie zweryfikować, jakie dane dołączane są do wykonywanych poleceń. W przeciwnym razie nasz serwer może zostać poważnie narażony na atak typu shell injection.
$arg = $_GET[ 'arguments' ]; // ' | rm ?r *' passthru( 'vip_script ' . $arg );
By się bronić, oprócz wyrażeń regularnych do dyspozycji mamy dwie funkcje: escapeshellcmd oraz escapeshellarg, które zajmują się czyszczeniem przekazywanych poleceń.
|
Czytelność kodu |
|---|
| W systemach niekrytycznych (czyli takich, w których optymalne wykorzystanie mocy obliczeniowej procesora nie jest sprawą najważniejszą) jednym z głównych kryteriów oceny pracy programisty jest czytelność tworzonego przez niego kodu źródłowego. Przy takich kryteriach pożytek nawet z dobrze działającego programu staje się niewielki, gdy jego kod pozostaje całkowicie niezrozumiały dla osób postronnych. Podczas pisania programu dobrze jest więc wyodrębniać fragmenty kodu źródłowego, tworząc w ten sposób niezależne funkcje, czy też deklarować dodatkowe zmienne, nawet jeśli miałyby być wywołane tylko raz w całym programie – wszystko po to, by zwiększyć jego czytelność. Na czytelność kodu źródłowego ma także wpływ zastosowanie w nim odpowiednich wcięć, dodatkowych białych znaków (spacji i tabulatorów) oraz logiczność jego kompozycji. |
«poprzednia 1 2 3 4 następna »
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
19
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
15 faktów o polskim e-biznesie, których nie znasz – zobacz wideo!
Z okazji wypuszczenia akcji Facebooka przypomnijmy sobie, kim jest Zuckerberg
10
Nowy problem z Windows 8: bootuje się za szybko
10
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Co czeka programistów po czterdziestce?
27
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Społeczność
lol Jak ktoś tu wcześniej zauważył - artykuł jest o niczym, a właściwie ukrytą...
grzybecki To raczej powinien być znak dla programistów Social Media, aby swoje...
facebug @rychu
Strona wchodzi, ślamazarnie ale wchodzi mam takie...
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
inna niedawno temu miałam kod, którym można było od razu zmienić wszystkie...
asdfgh przeciek kontrolowany
Bilberry cytat: "Flash jest już z nami od roku 1996, podczas gdy HTML5 ma dopiero...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |








