У меня есть простой сайт, на котором я устанавливаю соединение с сервером Mysql с использованием PDO.
$dbh = new PDO('mysql:host=localhost;dbname=DB;port=3306', 'USER',
'SECRET',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
У меня был некоторый трафик на моем сайте, и был достигнут лимит подключения к серверу, и сайт выдает эту ошибку с моим паролем PLAIN!
Неустранимая ошибка: исключение для исключения "PDOException" с сообщением 'SQLSTATE [08004] [1040] Слишком много соединений "в /home/domain/html/index.php:xxx Трассировка стека: # 0 /home/domain/html/index.php(64): PDO → __ конструкт ( 'MySQL: хост = Сумасшедшая...', 'USER', 'SECRET', Array) # 1 {main} брошен /home/domain/html/index.php on строка 64
По иронии судьбы я переключился на PDO по соображениям безопасности, так что это действительно шокировало меня, потому что эта точная ошибка - это то, что вы можете очень легко спровоцировать на большинстве сайтов, используя простую HTTP-атаку.
Теперь я завернул свое соединение в блок try/catch, но все же считаю, что это катастрофично!
Я новичок в PDO, и поэтому мой вопрос: что я должен сделать, чтобы считать безопасным? Как установить соединение безопасным способом? Существуют ли другие известные дыры в безопасности, подобные этой, о которой я должен знать?