Почему PDO печатает мой пароль при сбое подключения?

У меня есть простой веб-сайт, где Я устанавливаю соединение с сервером Mysql с помощью PDO.

$dbh  =  new PDO('mysql:host=localhost;dbname=DB;port=3306', 'USER', 
'SECRET',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

У меня был некоторый трафик на моем сайте, и был достигнут предел подключения серверов, и веб-сайт выдает эту ошибку с моим паролем PLAIN!

Неустранимая ошибка: Uncaught исключение 'PDOException' с сообщением 'SQLSTATE [08004] [1040] Слишком много связи в /home/domain/html/index.php:xxx Трассировка стека: # 0 /home/domain/html/index.php(64): PDO -> __ construct ('mysql: host = loca ...', "ПОЛЬЗОВАТЕЛЬ", "СЕКРЕТНО", массив) # 1 {main} добавлено /home/domain/html/index.php в строка 64

По иронии судьбы, я переключился на PDO из соображений безопасности, так что это действительно шокировало меня, потому что именно эту ошибку можно очень легко спровоцировать на большинстве сайтов, использующих простой HTTP-переполнение.

Теперь я заключил свое соединение в блокировку try / catch, но все же считаю, что это катастрофа!

Я новичок в PDO, поэтому у меня вопрос: что мне делать, чтобы считаться безопасным? Как установить безопасное соединение? Есть ли другие известные дыры в безопасности, подобные этой, о которых я должен знать?

53
задан sellotape 18 July 2015 в 08:54
поделиться