我使用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类,以便它不会在其异常中显示合理的信息?
由于
答案 0 :(得分:3)
您可以定义ErrorController。
,而不是更改显示错误选项或生产环境设置对于生产系统中的项目,几乎必须使用ErrorController。它捕获由于应用程序逻辑缺陷而导致应用程序抛出的任何异常,或者捕获任何没有任何关联控制器/操作或与路由器中定义的任何模式不匹配的URL。
有关为Zend项目设置ErrorController的更多详细信息 - http://www.thedeveloperday.com/custom-profiler-for-live-environments/