[PHP] Zabezpieczenia

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Yataman
Posty: 19
Rejestracja: pn sty 26, 2004 7:58 pm

[PHP] Zabezpieczenia

Post autor: Yataman »

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?
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [PHP] Zabezpieczenia

Post autor: Dreen »

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.
Yataman
Posty: 19
Rejestracja: pn sty 26, 2004 7:58 pm

Re: [PHP] Zabezpieczenia

Post autor: Yataman »

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.
Wojciech Kocjan
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: sob gru 14, 2002 10:51 am

Re: [PHP] Zabezpieczenia

Post autor: Wojciech Kocjan »

Z tymi slashami to zależy od ustawień PHP. W pliku php.ini odpowiada za to:

Kod: Zaznacz cały

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
"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.
Yataman
Posty: 19
Rejestracja: pn sty 26, 2004 7:58 pm

Re: [PHP] Zabezpieczenia

Post autor: Yataman »

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?
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [PHP] Zabezpieczenia

Post autor: Dreen »

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
Yataman
Posty: 19
Rejestracja: pn sty 26, 2004 7:58 pm

Re: [PHP] Zabezpieczenia

Post autor: Yataman »

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.
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [PHP] Zabezpieczenia

Post autor: Dreen »

jak to $tekst z $_GET['tekst'] ? przeciez one zawsze maja te same wartosci
Yataman
Posty: 19
Rejestracja: pn sty 26, 2004 7:58 pm

Re: [PHP] Zabezpieczenia

Post autor: Yataman »

... nie lubię cytować siebie, ale sytuacja tego wymaga
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?
Chodzi oczywiście o porównanie szybkości odwołań do zmiennej.
katoda
Posty: 1
Rejestracja: śr maja 26, 2004 6:36 pm
Lokalizacja: z kapusty :)
Kontakt:

Re: [PHP] Zabezpieczenia

Post autor: katoda »

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.
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [PHP] Zabezpieczenia

Post autor: Dreen »

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.
ODPOWIEDZ