【发布时间】: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