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:
<?php
function danger_links($site)
{
if(strpos($_GET['site'], ".")!==false || (strpos($_GET['site'], "get")!==false) || (strpos($_GET['site'], "union")!==false) || (strpos($_GET['site'], "select")!==false) || (strpos($_GET['site'], "drop")!==false) || (strpos($_GET['site'], "<")!==false) || (strpos($_GET['site'], ">")!==false) || (strpos($_GET['site'], "%")!==false) || (strpos($_GET['site'], "@")!==false) || (strpos($_GET['site'], "update")!==false)) {
die ('Niedozwolony adres url'); }
}
?>
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ę
<?php
$_GET['site']=danger_links($_GET['site']);
?>
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:
<?php
elseif(isset($_GET['site']) && !empty($_GET['site']) && !isset($_GET['id']) || empty($_GET['id']) ) { $query = "SELECT * FROM `". $db_prefix ."_sites` WHERE name='".$_GET['site']."' ";
if($row[3]==false) {
}
else {
}
}
}
?>