Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Co złego jest w tej funkcji
ColdFire
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.10.2004

Ostrzeżenie: (0%)
-----


Witam. Mam taki kłopot- napisałem sobie funkcję zabezpieczającą linki przed atakami- jest tam pare funkcji na wyrost, ale to taki szczegół. funkcja wygląda tak:
  1. <?php
  2.  
  3. function danger_links($site)
  4. {
  5. $_GET['site']=strtolower($_GET['site']);
  6. if(strpos($_GET['site'], ".")!==false ||
  7.  (strpos($_GET['site'], "get")!==false)  ||
  8.  (strpos($_GET['site'], "union")!==false)  ||
  9.  (strpos($_GET['site'], "select")!==false) ||
  10.  (strpos($_GET['site'], "drop")!==false) ||
  11.  (strpos($_GET['site'], "<")!==false)  ||
  12.  (strpos($_GET['site'], ">")!==false)  ||
  13.  (strpos($_GET['site'], "%")!==false)  ||
  14.  (strpos($_GET['site'], "@")!==false)  ||
  15.  (strpos($_GET['site'], "update")!==false))
  16. {
  17. die ('Niedozwolony adres url');
  18. }
  19. }
  20.  
  21. ?>

po usunięciu $_GET['site']=danger_links($_GET['site']); wszystko wraca do normy... co zatem jest złego w w/w funkcji?
po czym w indexie robię
  1. <?php
  2.  
  3. $_GET['site']=danger_links($_GET['site']);
  4.  
  5. ?>

Przy wpisaniu któregoś "niebezpiecznego" linku pojawia się żądany napis, jednak wpisując cokolwiek innego nie wyświetla mi innej strony- a jest ona wyświetlana poprzez:
  1. <?php
  2.  
  3. elseif(isset($_GET['site']) && !empty($_GET['site']) && !isset($_GET['id']) || empty($_GET['id']) ) {
  4. $query = "SELECT * FROM `". $db_prefix ."_sites` WHERE name='".$_GET['site']."' ";
  5. $result = mysql_query($query);
  6. while ($row = mysql_fetch_row($result)) {
  7. if($row[3]==false) {
  8. echo ($row[6]);
  9. }
  10. else {
  11. eval ($row[6]);
  12. }
  13. }
  14. }
  15.  
  16. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 18:28