Я написал эту функцию для своих входов в систему, чтобы сделать ее безопасной:
function secureLogin($ary = array()){
try{
$securedArray = array();
foreach($ary as $val){
$val = str_replace("'","",$val);
//$val = str_replace("%","",$val);
$val = str_replace("drop ","",strtolower($val));
$val = str_replace("show ","",strtolower($val));
$val = str_replace("insert ","",strtolower($val));
$val = str_replace("create ","",strtolower($val));
$val = str_replace("update ","",strtolower($val));
$val = str_replace("select ","",strtolower($val));
$val = str_replace("or ","",strtolower($val));
$val = str_replace('"',"",$val);
$val = str_replace(";","",$val);
$securedArray[] = strip_tags($val);
}
}catch(Exception $exc){
return $exc->getMessage();
}
return $securedArray;
}
Я протестировал его с помощью некоторых инструментов, таких как инструменты SQLMAP, Havij и Acunetix, которые показывают хорошие результаты, но я хочу получить рекомендации некоторых экспертов, чтобы сделать мою страницу входа / входа со страницы входа в систему настолько безопасной, насколько это необходимо.
Я не понимаю, что вы пытаетесь поймать в своем коде, все эти str_replace не вызовут никаких исключений PDOException.
Если вы используете правильно подготовленные утверждения, вам не нужно заменять слова. Кроме того, простое удаление важного слова, такого, что не сделает вас безопасным для входа в систему, а злоумышленнику потребуется только сложнее его использовать.
Других решений пока нет …