Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 0 Dołączył: 10.07.2009 Ostrzeżenie: (0%)
|
Witam.
Pobierając dane poprzez mysql_fetch_assoc zapytaniem: mysql_query('SELECT * FROM tabela where id = "5"') or die(mysql_error); Pole id 5 jest pobierane poprzez $_GET Jeśli go nie przefiltruje to jest jakieś niebezpieczeństwo takie, że po wpisaniu jakiś poleceń zamiast "5" może zapytanie przerobić się w update albo delete ? Jak to wygląda ? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 19.11.2012 Ostrzeżenie: (0%)
|
Miałem na myśli jedną metodę walidacji, czyli gdy spodziewam się, że identyfikator ma być liczbą sprawdzam go funkcją is_numeric bądź wyrażeniem regularnym, a w przypadku, gdy identyfikator jest stringiem sprawdzam przy pomocy regular expressions.
Powyższe sprawdzenie wykonuje bez informowania użytkownika o tym czy wartość przeszła walidację czy nie wyświetlając jedynie ostateczny komunikat, że nie znaleziono artykułu. Dwa zapytania właśnie poto, żeby w przypadku wartości nieliczbowej uniemożliwić sql_injection. SELECT count(*) nieznacznie obciąża bazę, więc aplikacja ponosi niewielki koszt wydajności w porównaniu do zwiększenia bezpieczeństwa. |
|
|
|
piotr485 Bezpieczeństwo 8.12.2012, 22:33:07
markonix Kodsql injection 9.12.2012, 11:10:26
viking Wystarczy jakiś błąd w PHP (a w przeszłości już ró... 9.12.2012, 18:23:09
wizarts Najpierw sprawdź czy przesłany identyfikator spełn... 10.12.2012, 12:21:50
markonix wizarts niepotrzebne kroki. Po co walidacja is_num... 10.12.2012, 13:36:12
markonix Nigdzie nie widziałem w poważnej aplikacji aby prz... 10.12.2012, 14:25:10
wizarts Cytat(markonix @ 10.12.2012, 14:25:10... 10.12.2012, 20:23:03 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 23:47 |