Zend Db表启动时异常显示Db用户和密码.如何阻止它


Zend Db Table when launch exception show the db user and password. How to stop it?

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

如果有错误,比如MySQL down, ZF抛出一个数据库连接用户名和密码的异常。

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

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类,使其不显示异常的合理信息?

谢谢

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

对于生产系统中的项目来说,拥有ErrorController几乎是强制性的。它捕获任何由你的应用程序抛出的异常,由于应用程序的逻辑缺陷,或者它捕获任何URL,没有任何相关的控制器/操作或不匹配任何模式定义在你的路由器。

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