0

Základní zabezpečení PHP aplikací

 

Je zřejmé, že PHP + MySQL + Apache je populární komponenty webové technology. Jsou silné, všestranné a zdarma. Nicméně, výchozí nastavení PHP není vhodné pro ostrý provoz. Zde je kontrolní seznam nastavení, které jsou doporučeny oproti výchozímu nastavení.


1) Zakázat manipulaci se soubory na jiných serverch

allow_url_fopen = Off

2) Zakázat globální registraci

register_globals = Off

3) Omezit kde PHP může číst a zapisovat

open_basedir = /var/www/htdocs/files

4) Omezit velikost souborů pro POSTING, využití paměti a doby běhu

max_execution_time = 30 ;Max script execution time
max_input_time = 60 ;Max time spent parsing input
memory_limit = 16M ;Max memory used by one script
upload_max_filesize = 2M ;Max upload file size
post_max_size = 8M ;Max post size

5) Zakázat zobrazování chyb

display_errors = Off
log_errors = On

6) Skrýt použití PHP

expose_php = Off

7) Pokročilý safe_mode

safe_mode = Off safe_mode_gid = On

Pozn: omezit zápis jen na soubory vlastněné Apachem, ale povit čtení i na ostatní

8) Pomocí httacess povolit čtetní jen určitých souborů – podle přípony

<filesmatch>
Order allow,deny
Deny from all
</filesmatch>

9) Kontrolovat obsah vstupních parametrů

Použít např. tyto funkce: filter_var(), filter_input(), filter_id() etc.

 

10) Zabezpečit proměnné vstupující do SQL dotazů

mysql_real_escape_string(): Escapes a string for use in SQL statementsmysql_escape_string()
addslashes()
quoteSmart()

11) Filtrovat výstupní data – zapránit tak spouštění škodlivého JS kódu

htmlspecialchars()
htmlentities()
strip_tags()
strtr()

12) Zabránit útokům typu INJECTION

a) Remote File Injection
př: include($_GET[‘content’] . ‘.php’);

b) Local File Iclusion
př: require_once($LANG_PATH . ‘/’ . $_GET[‘lang’] . ‘.php’);

b) Command Injection
např zneužití funkcí exec(), shell()

zdroj: http://www.saynotes.com/12-essential-checks-on-securing-php/

admin

Napsat komentář