【问题标题】:Zend Db Table when launch exception show the db user and password. How to stop it?Zend Db Table 在启动异常时显示 db 用户和密码。如何阻止它?
【发布时间】:2012-01-27 00:03:18
【问题描述】:

我使用 Zend_Db_Table 来管理我的 MySQL 连接。 它们工作得很好,但只有一个巨大的安全问题。

如果出现错误,例如 MySQL 已关闭,ZF 会使用 db 连接用户名和密码抛出异常。

例如,我在配置中设置了错误的数据库密码。 这是抛出的异常。

exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)' in /Users/claudiocanino/Dev/htdocs/include/Zend/Db/Adapter/Pdo/Abstract.php:129
Stack trace:
#0 /Users/claudiocanino/Dev/htdocs/include/Zend/Db/Adapter/Pdo/Abstract.php(129): PDO->__construct('mysql:dbname=ci...', 'root', 'rootads', Array)
#1 /Users/claudiocanino/Dev/htdocs/include/Zend/Db/Adapter/Pdo/Mysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect()
#2 /Users/claudiocanino/Dev/htdocs/include/Zend/Db/Adapter/Abstract.php(459): Zend_Db_Adapter_Pdo_Mysql->_connect()
...

这里是明文的用户名和密码。 如何修改 Zend_Db_Table 类,使其不在异常中显示敏感信息?

谢谢

【问题讨论】:

  • 如果您更改为production 环境,则不会显示堆栈跟踪。事实上,根本没有显示异常,只是您在ErrorController/view 中定义的。
  • 还可以查看 php.ini 中的 resources.frontController.params.displayExceptions 设置。如果它是1(或非零),那么无论环境如何,都会显示异常。
  • 在我的 php.ini 中,我设置了 error_reporting = 0 和 display_errors = Off。在代码中还有 error_reporting(0);但它继续显示同样该死的错误。你有什么主意吗?谢谢大家

标签: php zend-framework


【解决方案1】:

您可以定义 ErrorController,而不是更改显示错误选项或生产环境设置。

对于生产系统中的项目来说,拥有一个 ErrorController 几乎是必须的。它会捕获由于应用程序逻辑缺陷而由您的应用程序引发的任何异常,或者它会捕获没有任何关联控制器/操作或与路由器中定义的任何模式不匹配的任何 URL。

有关为 Zend 项目设置 ErrorController 的更多详细信息 - http://www.thedeveloperday.com/custom-profiler-for-live-environments/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2017-07-27
    相关资源
    最近更新 更多