我的链接结构如下......
http://domain.com?problem_id=23&course_id=4
GET“字段”(problem_id和course_id)的预期值是整数。我可以通过简单地说......
来验证这些数据if (is_numeric($_GET['problem_id'])){
//It's safe, so do stuff.
} else {
echo 'It appears you submitted a problem incorrectly. Please contact us for assistance';
exit;
}
或者这仍然像sql注入等那样肮脏吗?
建议的解决方案
$int_problem_id = (int) $_GET['problem_id'];
if (ctype_digit($int_problem_id)){
//It's safe, so do stuff.
} else {
echo 'It appears you submitted a problem incorrectly. Please contact us for assistance';
exit;
}
答案 0 :(得分:2)
是的,这是一个解决方案。此外,您还可以转换为int。
$integer = (int) $_GET['problem_id'] ;
您应该保护数据库的所有输入,即使数字值不会造成任何损害,因为它们不包含特殊符号。
答案 1 :(得分:1)
您可以确保?problem_id=
是数字。您的所有其他字段可能仍然存在风险,因此这不是防止SQL注入的正确方法。您应该查看PDO和MySQLi及其bindParam / bind_params函数。