Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapezbieczanie się przed XSS oraz innego typu...
Forum PHP.pl > Forum > PHP
AndyPSV
Da się całkowicie zabezpieczyć przed atakami XSS oraz SQL injection, filtrująć każdą zmienną GET i POST.

Przykładowo:

  1. <?php
  2.  
  3. foreach ($_GET as $value) {
  4. if ((eregi(&#092;"<[^>]*script*\"?[^>]*>\", $value)) ||
  5. (eregi(&#092;"<[^>]*object*\"?[^>]*>\", $value)) ||
  6. (eregi(&#092;"<[^>]*iframe*\"?[^>]*>\", $value)) ||
  7. (eregi(&#092;"<[^>]*applet*\"?[^>]*>\", $value)) ||
  8. (eregi(&#092;"<[^>]*meta*\"?[^>]*>\", $value)) ||
  9. (eregi(&#092;"<[^>]*style*\"?[^>]*>\", $value)) ||
  10. (eregi(&#092;"<[^>]*form*\"?[^>]*>\", $value)) ||
  11. (eregi(&#092;"([^>]*\"?[^)]*)\", $value)) ||
  12. (eregi(&#092;"\"\", $value)) ||
  13. (eregi(&#092;"'\", $value)) ||
  14. (eregi(&#092;"<[^>]*\", $value)) ||
  15. (eregi(&#092;"[^>]>\", $value)) ||
  16. (eregi(&#092;"*\", $value)) ||
  17. (eregi(&#092;"[]]\", $value)) ||
  18. (eregi(&#092;"select\", $value)) ||
  19. (eregi(&#092;"0x73656c656374\", $value)) ||
  20. (eregi(&#092;";\", $value)) ||
  21. (eregi(&#092;"--\", $value)) ||
  22. (eregi(&#092;"@\", $value)) ||
  23. (eregi(&#092;"/\", $value)) ||
  24. (eregi(&#092;"%\", $value))
  25. )
  26. {
  27. ..
  28. }
  29. }
  30.  
  31. foreach ($_POST as $value) {
  32. if ((eregi(&#092;"<[^>]*script*\"?[^>]*>\", $value)) ||
  33. (eregi(&#092;"<[^>]*style*\"?[^>]*>\", $value)))
  34. {
  35. ..
  36. }
  37. }
  38.  
  39. ?>

.

Jednak owo filtrowanie można ominąć w bardzo prosty sposób.
Podająć wartość $_GET jako: %3Cscript%3Ealert%28document.cookie%29%3B%3C%2Fscript%3E (XSS).

Jednak można jeszcze kilkoma technikami ominąć filtrowanie, stosująć kodowanie.

Problem: Jak się zabezpieczyć do granic możliwości przechodząć przez wszystkie zmienne $_GET i $_POST ?
Vengeance
  1. <?php
  2. foreach($_GET as $a => $b)
  3. {
  4.  $_GET[$a] = htmlspecialchars($b);
  5. }
  6. reset($_GET);
  7. var_dump($_GET);
  8. ?>


cos takiego ?
rogrog
to zależy do czego

do HTMLa - htmlspecialchars
do MySQLa - mysql_escape_string //inne bazy też mają odpowiednie funkcje

i tyle - nie ma lepszej rady...
Dabroz
I jeszcze intval" title="Zobacz w manualu PHP" target="_manual do wartości liczbowych.

Ale tego już było na forum sporo, poszukaj...
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.