php_bezpieczenstwo.pdf

(255 KB) Pobierz
176324081 UNPDF
Konferencja PHP 2003
Bezpieczeństwo skryptów PHP
Marek Jakubowicz m@sote.pl
Zagadnienia:
Zasady bezpiecznego pisania kodu PHP
Konfiguracja PHP: safe_mode, open_basedir
Utajnianie danych dostępu do bazy
Sesje PHP zagrożenia, metody zabezpieczania
Dynamiczne moduły PHP
176324081.002.png
Konferencja PHP 2003
Zasady bezpiecznego pisania skryptów PHP
1. Należy ustawić opcję register_globals=Off
a) php.ini (globalnie dla wszystkich skryptów)
register_globals=Off
b) httpd.conf ( dla danej domeny
np. w <VirtualHost ...></VirtualHost>
php_admin_value register_globals 0
c) .htaccess (dla poszczególnych
katalogów/podkatalogów)
php_flag register_globals 0
176324081.003.png
Zasady bezpiecznego pisania skryptów PHP Konferencja PHP 2003
Wyłączenie register_globals eliminuje wiele popularnych
ataków na aplikacje napisane w PHP.
Przykład wykorzystania słabości register_globals=On:
<?php
if ( $password == ' 12345 ') $auth =1;
...
if ( $auth ==1) print ' tajny kod ';
?>
Wystarczy teraz wywołać skrypt z parametrem $auth=1, żeby
otrzymać 'tajny kod': http://www.przyklad.com/strona.php?auth=1
176324081.004.png
Zasady bezpiecznego pisania skryptów PHP Konferencja PHP 2003
2. Jeśli nie możemy ustawić opcji register_globals=off
(np. gdy program z tą opcją przestaje działać), to powinniśmy
zawsze definiować wartości dla zmiennych nie przekazywanych
przez użytkownika.
np. dla poprzedniego przykładu może to być:
<?php
$auth = 0 ;
if ( $password == ' 12345 ') $auth = 1 ;
...
if ( $auth == 1 ) print ' tajny kod ';
?>
176324081.005.png
Zasady bezpiecznego pisania skryptów PHP Konferencja PHP 2003
3. Przy pisaniu i testowaniu skryptów powinniśmy ustawić
odpowiedni poziom raportowania błędów:
<?php
error_reporting( E_ALL );
...
?>
otrzymamy wiele przydatnych informacji o prawdopodobnych
błędach w naszym skrypcie m.in: o niezedfiniowanych zmiennych,
o braku załączanych plików (np. poprzez include),
informacje o anomaliach związanych z sesją itp.
Uwaga!
Zalecane jest wyłączenie tej opcji w wersjach stabilnych
skryptów/aplikacji. np. poprzez: error_reporting(1)
176324081.001.png
Zgłoś jeśli naruszono regulamin