Why does PDO print my password when the connection fails?
- by Joe Hopfgartner
I have a simple website where I establish a connection to a Mysql server using PDO.
$dbh  =  new PDO('mysql:host=localhost;dbname=DB;port=3306', 'USER', 
'SECRET',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
I had some traffic on my site and the servers connection limit was reached, and the website throw this error, with my PLAIN password in it!
  Fatal error: Uncaught exception
  'PDOException' with message
  'SQLSTATE[08004] [1040] Too many
  connections' in
  /home/premiumize-me/html/index.php:64
  Stack trace: #0
  /home/premiumize-me/html/index.php(64):
  PDO-__construct('mysql:host=loca...',
  'USER', 'SECRET', Array) #1
  {main} thrown in
  /home/premiumize-me/html/index.php on
  line 64
Ironically I switched to PDO for security reasons, this really shocked me.
Because this exact error is something you can provoke very easily on most sites using simple http flooding.
I now wrapped my conenction into a try/catch clause, but still. I think this is catastrophic! 
So I am new to PDO and my questino is: What do I have to consider to be safe! How to I establish a connection in a secure way? Are there other known security holes like this one that I have to be aware of?