【发布时间】:2025-11-22 02:40:01
【问题描述】:
当涉及到 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.) 输出一般错误(即“否找到的结果")...D.) 还有什么?
当依赖于脚本定义的 $_GET 输入而不是用户输入的查询失败时怎么办? (意味着只有在 URL 被篡改时才会失败)...最好是输出一般错误还是直接终止脚本,因为普通访问者不会弄乱 URL?
【问题讨论】:
-
这种方法实际上取决于您和您的应用程序。但我认为显示错误更好,这样您就知道查询失败了。
标签: php mysql validation error-handling