当涉及SQL注入(盲目或其他)时,似乎最好的预防方法是使用预处理语句结合输入/输出验证/转义,但我想知道输入验证失败时的最佳实践或处理MySQL错误(失败的查询),以便进一步阻止注入,并尽可能提高安全性?
例如,在验证$ _GET输入时:我期待数字输入,在这种情况下最佳做法是什么:
if (is_numeric($_GET['id']))
{
// Run queries and continue with page output as normal
}
else
{
// Input is not what's expected so the query is guaranteed to fail...
// What is the best thing to do here?
}
最好是A.)用die()杀死脚本导致空白页面... B。)重定向到另一个页面(即索引)... C。)输出一般错误(即&# 34;没有找到结果")...... D。)别的东西?
当查询失败时,依赖于由脚本而不是用户输入定义的$ _GET输入怎么办? (意味着只有在URL被篡改时它才会失败)...最好是输出一般错误还是只是杀死脚本,因为普通访问者不会弄乱URL?
答案 0 :(得分:0)
你可以做一个解析。使用以下值运行查询:(int)$_GET['id']
如果您不希望查询失败,如果该结果为null,则可以将WHERE id =(int)$ _ GET ['id']替换为WHERE id IN ('(int)$_GET['id']')
答案 1 :(得分:0)
如果你想处理来自mysql opr php的错误,你可以使用try和cache这是最好的做法,你可以在Cache块中显示任何消息......
我希望这对你有帮助。