Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie przed włamem przez zmienne _GET
Forum PHP.pl > Forum > PHP
Novik
Czy sprawdzi się poniższy kod?

Chodzi o włamy typu:
http://www.sklep-ogrod.pl/kategoria.php?id...nazwy&o=asc

  1. <?php
  2.  
  3. function ZabezpieczenieHttp()
  4. {
  5. $filepage = $_SERVER["REQUEST_URI"];
  6.  
  7. $is_down = array(
  8. 'SELECT', 'select',
  9. 'FROM', 'from',
  10. 'UPDATE', 'update',
  11. 'UNION', 'union',
  12. 0);
  13.  
  14. unset($is_blocked);
  15.  
  16. for ($k=0;$k<count($is_down)-1;$k++) {
  17. if (strpos($filepage,$is_down[$k])) {
  18. $is_blocked++;
  19. }
  20. }
  21.  
  22. if ($is_blocked) {
  23. die('Daruj sobie!');
  24. }
  25. }
  26.  
  27. ZabezpieczenieHttp();
  28.  
  29. ?>


Czy możecie wypisać więcej słów używanych do takich włamów?

  1. $is_down = array(
  2. 'SELECT', 'select',
  3. 'FROM', 'from',
  4. 'UPDATE', 'update',
  5. 'UNION', 'union',
  6. 0);
owned
Nie rób tego w ten sposób, lepiej sprawdzaj Switchem:
switch($id){
case 'nazwa_id':
//operacja do wykonania;
break;
default:
//jezeli id bedzie rozne od wymienionych powyzej
}
wizard144
  1. switch($_GET['id'])
  2. {
  3. case 1:include('start.php');break;
  4. case 2:include('jakas_strona.php');break;
  5. case 3:include('jakas_inna_strona.php');break;
  6.  
  7. default :include('start.php');break;
  8. }


Gotowe rozwiązanie
Fafu
Wy chyba nie odróżniacie LFI od SQL Injection...

Ja bym polecał po prostu addslashes lub po prostu rzutować na liczbę (jeśli zmienna w _GET musi być liczbą):
  1. $id = (int)$_GET['id'];
cudny
A ja bym to przesłał metodą POST i bym miał święty spokój - potem addslahes(); i po krzyku.
Ale oprócz tego używam też switch{};

pzdr
Novik
Cytat(wizard144 @ 2.10.2009, 07:41:25 ) *
  1. switch($_GET['id'])
  2. {
  3. case 1:include('start.php');break;
  4. case 2:include('jakas_strona.php');break;
  5. case 3:include('jakas_inna_strona.php');break;
  6.  
  7. default :include('start.php');break;
  8. }


Gotowe rozwiązanie



Głupie rozwiązanie jeżeli mam includować w ten sposób ponad 200 plików. Oprócz tego, niektóre podstrony są pobierane z bazy danych (infopage).
Chodzi mi aby mój kod powyżej użyć przed wykonaniem wszystkich pozostałych funkcji...

Cytat(cudny @ 2.10.2009, 09:15:31 ) *
A ja bym to przesłał metodą POST i bym miał święty spokój - potem addslahes(); i po krzyku.
Ale oprócz tego używam też switch{};

pzdr


Jak w temacie chodzi mi o zabezpieczenie przed włamami przez _GET. Dla _POST osobne zabezpieczenie...
paw-e-l
mysql_real_escape_string powinno wystarczyć
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.