我使用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/