[PHP] Zabezpieczenia
[PHP] Zabezpieczenia
Ostatnio zaczęłem analizować swoje aplikacje pod względem bezpieczeństwa i parę rzeczy zwróciło moją uwagę. Jak to dokładnie jest z tym dodawniem ukośników. Wszędzie piszą, że trzeba stosować addslashes i stripslashes, ale z tego co widzę to już samo PHP robi to automatycznie. Od czego to zależy? Od wersji PHP, ustawień apache?
Re: [PHP] Zabezpieczenia
Jesli mowimy o bezpieczenstwie, to przede wszystkim nalezy sprawdzic zmienne przekazywane metoda GET. Bezwzglednie nie nalezy poprostu wstawiac ich wartosci do doumentu, lecz sprawdzac je pod wzgledem zawartosci i/lub uzywac ich tylko jako wartosci, do ktorych odnosi sie identyfikujac tresc.
Re: [PHP] Zabezpieczenia
No dokładnie o tym mówiłem. Do tej pory stosowałem zmienne w skróconym zapisie i sprawdzając czy jestem w stanie włamać się do swoich aplikacji zobaczyłem, że wszędzie (w metodzie get i post) automatycznie dodaje slasze.
Trochę to się kłóci z tym co czytałem i zasanawiam się od czego zależy taka opcja.
Trochę to się kłóci z tym co czytałem i zasanawiam się od czego zależy taka opcja.
-
Wojciech Kocjan
- Zaczyna działać

- Posty: 427
- Rejestracja: sob gru 14, 2002 10:51 am
Re: [PHP] Zabezpieczenia
Z tymi slashami to zależy od ustawień PHP. W pliku php.ini odpowiada za to:
"On" oczywiście oznacza dodawanie slashy.
Podstawowa zasada bezpieczeństwa skryptów php to brak zaufania do użytkowników. Należy filtrować wszystko co przesyła USER, nie tylko metodą GET, ale też każdą inną.
Przy zapytaniach do bazy MySQL warto stosować funkcje [manual]mysql_escape_string[/manual], ktora usunie wszystkie niebezpieczne znaki w zapytaniu.
Kod: Zaznacz cały
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
Podstawowa zasada bezpieczeństwa skryptów php to brak zaufania do użytkowników. Należy filtrować wszystko co przesyła USER, nie tylko metodą GET, ale też każdą inną.
Przy zapytaniach do bazy MySQL warto stosować funkcje [manual]mysql_escape_string[/manual], ktora usunie wszystkie niebezpieczne znaki w zapytaniu.
Re: [PHP] Zabezpieczenia
Sprawdziłem czy ta opcja jest automatycznie włączana na serwerach internetowych, których używam i dzięki bogu wszystko jest dobrze ustawione.
Czy coś przemawia za stosowaniem tablicowego zapisu zmiennych zamiast form skróconych? Czy są jakieś wyraźne różnice w szybkości odwołań do zmiennych?
Czy coś przemawia za stosowaniem tablicowego zapisu zmiennych zamiast form skróconych? Czy są jakieś wyraźne różnice w szybkości odwołań do zmiennych?
Re: [PHP] Zabezpieczenia
nie wiem czy dobrze cie zrozumialem ale odpowiem kodem:
to:
[php]<?php
// scrypt.php?tekst=to%20jest%20jakis%20tekst
$tekst = $_GET['tekst'];
echo $tekst;
?>[/php]jest gorsze od tego:[php]<?php
// scrypt.php?id=1
$tablica = array(0=>"to jest jakis test", "to jest inny tekst");
$tekst = $tablica[$_GET['id']];
echo $tekst;
?>[/php]ten drugi jest oczywiscie bezpieczniejszy
to:
[php]<?php
// scrypt.php?tekst=to%20jest%20jakis%20tekst
$tekst = $_GET['tekst'];
echo $tekst;
?>[/php]jest gorsze od tego:[php]<?php
// scrypt.php?id=1
$tablica = array(0=>"to jest jakis test", "to jest inny tekst");
$tekst = $tablica[$_GET['id']];
echo $tekst;
?>[/php]ten drugi jest oczywiscie bezpieczniejszy
Re: [PHP] Zabezpieczenia
Chodziło mi o porównanie $_GET['tekst'] z $tekst. Jeśli chodzi o bezpieczeństwo to po prostu nie mam zbyt dużo czasu by wpisać je na listę priorytetów.
Re: [PHP] Zabezpieczenia
jak to $tekst z $_GET['tekst'] ? przeciez one zawsze maja te same wartosci
Re: [PHP] Zabezpieczenia
... nie lubię cytować siebie, ale sytuacja tego wymaga
Chodzi oczywiście o porównanie szybkości odwołań do zmiennej.Czy coś przemawia za stosowaniem tablicowego zapisu zmiennych zamiast form skróconych? Czy są jakieś wyraźne różnice w szybkości odwołań do zmiennych?
Re: [PHP] Zabezpieczenia
Nie każdy serv obsługuje $tekst zamiast $_GET['tekst']. Ja byłem uczony na $_GET['tekst'] i tego się trzymam. Także (chyba) $_GET['tekst'] jest szybsze.
Re: [PHP] Zabezpieczenia
Yataman -> aha juz rozumiem i sadze ze nawet przy bardzo duzych skryptachm gdzie ma sie doczynienia z grubo ponad setka zmiennych, taka roznica jest niezauwazalna, a juz napewno nie ma zwiazku z bezpieczenstwem, dopuki nie stosujesz tego jak w kodzie nr.1
katoda -> to zalezy od zmiennej srodowiskowej register_globals i nie ma zwiazku z pytaniem, bowiem w obydwu kodach zakladam, ze register_globals = "Off", co jest najczestszym i najlepszym rozwiazaniem.
katoda -> to zalezy od zmiennej srodowiskowej register_globals i nie ma zwiazku z pytaniem, bowiem w obydwu kodach zakladam, ze register_globals = "Off", co jest najczestszym i najlepszym rozwiazaniem.