Zpět na seznam článků     Číst komentáře (5)     Verze pro tisk

Základní zabezpečení PHP (1 - nastavení serveru)

Autor: am   
19.7.2006

Základy zabezpečení PHP pro programátory i správce serveru


Nastavení serveru:

Pokud používáte server pouze pro vývoj a odlaďování, není třeba klást na zabezpečení takový důraz, jako nejlepší zabezpečení pak poslouží si webserver zakázat na firewallu nebo jinak uzamknout proti vnějšímu přístupu, takže se vám do něj nikdo nedostane a nemusíte se zabývat bezpečností.

Jestliže je ale na server veřejný přístup, je nutné si se zabezpečením trochu pohrát. Pokud máte aktuální verzi, PHP samo o sobě vlastně žádné známé bezpečnostní riziko nepřinese. Problém ovšem může nastat ve vašem kódu - někde něco přehlédnete, zapomenete zabezpečit, najde se šťoural a pohroma je tady. Proto je dobré nastavit PHP server tak, aby minimalizoval možné škody a jejich riziko.

Safe mode je poměrně užitečná věc, která zabrání některým nechtěným katastrofám. Otevřete si soubor php.ini (na win32 bývá ve složce windows nebo tam, kde je nainstalované PHP) a upravte řádek:
Safe_mode = On
open_basedir = C:\web

Přičemž C:\web nahradíte cestou ke svému webu na lokálním disku. Nezapomeňte z řádku s open_basedir odmazat středník na začátku (zakomentářování). Tím dosáhnete toho, že PHP nemůže za žádných okolností přistupovat k souborům, které leží mimo tento adresář (a jeho podadresáře). Úmyslně byste tento přístup asi využili málokdy a i v těchto případech se dá najít jiné řešení a předejtete tak tomu, že potenciální útočník díky případné chybě získá přístup k vašim souborům (povaha přístupu - čtení/zápis/mazání záleží na typu chyby kódu).

Další dobrá věc je vypnout register_globals (výchozí nastavení je vypnuté, ale spousta lidí je zapíná). Že jsou vypnuté se ujistíte tak, že v php.ini vyhledáte a popř. upravíte řádku register_globals = Off. jedná se o styl přístupu k proměnným, kdy nemusíte určit, kterému superglobálnímu poli patří. Např. pokud pomocí URL předáte proměnnou bagr, potom při register_globals ji vidíte i jako $bagr, jinak jen jako $_GET['bagr']. Problém ale je, že při zapnutých register_globals může $bagr být předaný přes GET, POST, může to být i cookie nebo session nebo vyhrazená serverová proměnná. Samotné používání globálních proměnných není nijak nebezpečné, ovšem programátoři se při tom často dopouštějí bezpečnostních chyb a proto se přestaly používat a místo toho se používá přístup přes superglobální pole (např. _GET). Pokud jste zvyklí používat globální proměnné, možná vám bude chvilku trvat se přeučit, ale kód je potom mnohem přehlednější i pro vás a navíc na některých hostingových serverech se už ani register_globals nezapíná.

V příštím článku hodlám psát o nejčastějších programových bezpečnostních chybách, které jsou původcem drtivé většiny bezpečnostních rizik

.

Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 0/0

1  2  3  4  5    
(známkování jako ve škole)