gpt4 book ai didi

php - 如何防止 PDO 错误上的密码转储

转载 作者:可可西里 更新时间:2023-11-01 08:17:35 25 4
gpt4 key购买 nike

我的 MySQL 数据库中有太多主机 PDO 异常:

 exception 'PDOException' with message 'SQLSTATE[HY000] [1129] Host 
'[IP ADDRESS]' is blocked because of many connection errors; unblock
with 'mysqladmin flush-hosts'' in /var/www/libs/Database.php:15

我理解这个错误,但真正的问题出在将数据库名称、登录名和密码转储到控制台的堆栈跟踪中:

Stack trace:
#0 /var/www/libs/Database.php(15): PDO->__construct('mysql:host=conf...',
'[db name]', '[db password]...', Array)

由于这是一个 AJAX 请求,它会转储到控制台浏览器中,这显然是一个问题。

如何避免这种情况发生?我是否错误地配置了 PHP?

最佳答案

As this is an AJAX request, it dumps into the console browser

当然,PHP(与其他服务器端语言一样)在另一台计算机上执行,无法访问浏览器的控制台。很可能,您的 PHP 和 JavaScript 都没有设计为优雅地处理错误情况。一些提示:

  • 始终在您的生产环境中将 display_errors 设置为 false。确保记录错误消息。

  • 调整您的服务器端代码,使其即使在数据库关闭时也能生成有效输出。例如,如果脚本应该生成 JSON,即使出现错误,它也应该发送 JSON 数据。为此:

    • 捕获PDOException
    • 记录错误详情
    • 发送 JSON 数据通知出现错误,例如:

      {"status": "error", "info": "Database is down"}
  • 调整您的客户端代码以处理 AJAX 响应中的任何 错误,包括带有 status=error 的正确 JSON 缺少正确的 JSON。

关于php - 如何防止 PDO 错误上的密码转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com