【问题标题】:PHP Input Validation and Handling MySQL Errors: What's The Safest Route?PHP 输入验证和处理 MySQL 错误:最安全的途径是什么?
【发布时间】: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


【解决方案1】:

如果你想处理来自 mysql opr php 的错误,那么你可以使用 try 和 cache,这是最佳实践,你可以在 Cache 块中显示任何消息...

希望这篇文章对你有帮助。

【讨论】:

    【解决方案2】:

    你可以做一个解析。使用值运行查询:(int)$_GET['id'] 如果您不希望在结果为 null 时查询失败,您可以将 WHERE id=(int)$_GET['id'] 替换为 WHERE id IN ('(int)$_GET['id']')

    【讨论】:

      最近更新 更多