Как остановить вывод ошибок MySQL в браузер с паролем БД? - PullRequest
0 голосов
/ 13 февраля 2011

Когда сервер имеет конфигурацию MySQL или другую ошибку, он печатает имя пользователя и пароль MySQL в браузере.Это угроза безопасности в том, что если база данных SQL недоступна, она также напечатает пароль для браузера.

В этом примере я намеренно установил пароль неверно, вот вывод:

Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «SQLSTATE [28000] [1045] Доступ запрещен для пользователя« username »@« localhost »(с использованием пароля: YES)» в / usr / local / zend / share / ZendFramework/library/Zend/Db/Adapter/Pdo/Abstract.php:129 Трассировка стека: # 0 /usr/local/zend/share/ZendFramework/library/Zend/Db/Adapter/Pdo/Abstract.php(129): PDO-> __ construct ('mysql: host = loca ...', 'drupal', 'password', Array) # 1 / usr / local / zend / share / ZendFramework / library / Zend / Db / Adapter / Pdo / Mysql.php (96): Zend_Db_Adapter_Pdo_Abstract -> _ connect () # 2 /usr/local/zend/share/ZendFramework/library/Zend/Db/Adapter/Abstract.php(459): Zend_Db_Adapter_Pdo_Mysql - 3 (_) - 3 _local / zend / share / ZendFramework / library / Zend / Db / Adapter / Pdo / Abstract.php (238): Zend_Db_Adapter_Abstract-> query ('DESCRIBE site_...', Array) #4 /usr/local/zend/share/ZendFramework/library/Zend/Db/Adapter/Pdo/Mysql.php(156): Zend_Db_Adapter_Pdo_Abstract->query('DESCRIBE site _... ') # 5 /usr/local/zend/share/ZendFramework/library/Zend/Db/Table/Abstract.php(823): Zend_Db_Adapter_Pdo_Mysq в / usr / local / zend / share / ZendFramework / library/Zend/Db/Adapter/Pdo/Abstract.php в строке 144

Вот текущий код конфигурации в файле index.php

global $db;
if ($CFG->flagDBAdapters) {
    foreach ($config->db as $config_name => $database) {
        $dbAdapters[$config_name] = Zend_Db::factory($database->adapter,
        $database->config->toArray());
        if ((boolean) $database->default) {
            Zend_Db_Table::setDefaultAdapter($dbAdapters[$config_name]);
            $db = $dbAdapters[$config_name];
        }
    }
    Zend_Registry::set('dbAdapters', $dbAdapters);

Я попытался прочитать больше оPDO и вставка

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

Это просто привело к другой ошибке

Неустранимая ошибка: вызов неопределенного метода Zend_Db_Adapter_Pdo_Mysql :: setAttribute () в / usr / local / zend / apache2/htdocs/source/index.php в строке 301

Может ли кто-нибудь помочь мне указать правильное направление относительно того, что я должен искать?

Ответы [ 3 ]

2 голосов
/ 13 февраля 2011

Что ж, это больше похоже на вопрос, связанный с Zend Framework, а не на общую проблему PHP.
Итак, у ZF должны быть свои собственные способы отключения такого поведения.

Начиная с PHP, настройка display_errors может бытьвсегда выключен на рабочем сервере

0 голосов
/ 13 февраля 2011

Помещение символа @ перед оператором исключает ошибки, возникающие при выводе.

0 голосов
/ 13 февраля 2011

Вы можете использовать set_error_handler, чтобы указать свой собственный обработчик ошибок, который должен отображать что-то гораздо более удобное для пользователя в процессе производства при отображении более подробных данных отладки во время разработки / тестирования.

...