Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: htmlspecialchars, a sql injection
Forum PHP.pl > Forum > PHP
.radex
Jeśli taki temat był, to sorka - strona szukaj nie chce się ładować tongue.gif

Pytam tutaj, ponieważ to co zdobyłem nie dało mi jednoznacznej odpowiedzi.

Czy sposób na zabezpieczenie się przed atakiem sql injection (czy coś takiego) może być po prostu, filtrując zmienne z posta używając htmlspecialchars(); czy będe musiał zmieniać mnóóóóstwo zapytań sql, tak jak było to w przykładzie (temat - SQL inserction/ injection) ? Gdzieś znalazłem, że sposób na zabezpieczenie się nad atakiem jest dodając przed apostrofami i cudzysłowami backslasha, ale było to napisane w niejednoznaczny sposob....
pbnan
SQL Injection - zastrzyk SQL (dosłownie).

Przed tym atakiem nie obronisz się stosując htmlspecialchars() - ta funkcja się bardziej przydaje przy obronie przed XSS smile.gif
Musisz pododawać te cudzysłowy/apostrofy w odpowiednie miejsca w zapytaniach, niestety. smile.gif
JaRoPHP
Te funkcje (jedna z nich) powinny być używane, aby dodać "znak ucieczki" w danych wyjściowych dla MySQL-a:
- mysql_real_escape_string " title="Zobacz w manualu PHP" target="_manual,
- mysql_escape_string" title="Zobacz w manualu PHP" target="_manual,
- addslashes" title="Zobacz w manualu PHP" target="_manual (w ostateczności).
.radex
ale przecieeż htmlspecialchars dodaje backslasha przed apostrofem?
Kicok
Nie dodaje: htmlspecialchars" title="Zobacz w manualu PHP" target="_manual.

Może masz włączone magic_quotes_gpc i dlatego ci się wydaje, że jakaś funkcja ci dodaje backslashe?


Osobiście jednak uważam magic_quotes_gpc za dziadostwo a nie zabezpieczenie i w poważniejszych skryptach używam na początku:
  1. <?php
  2. if(get_magic_quotes_gpc() == 1) 
  3. {
  4. function remove_slashes(&$item, $key) {
  5. $item = stripslashes($item);
  6. }
  7.  
  8. array_walk_recursive($_POST, 'remove_slashes');
  9. array_walk_recursive($_GET, 'remove_slashes');
  10. array_walk_recursive($_COOKIE, 'remove_slashes');
  11. }
  12. ?>

Oczywiście później przed przekazaniem zmiennych do zapytania zabezpieczam je na swój sposób.
.radex
ummmm.... masz rację.. sorka, zamienia na kod. czyli wg. JaroPHP nie musze zmieniac tych zapytan pod warunkiem, że użyje jedna z tych funkcji?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.