为什么PDO在连接失败时打印我的密码?
我有一个简单的网站,我使用PDO建立与MySQL服务器的连接。
$dbh = new PDO('mysql:host=localhost;dbname=DB;port=3306',
'USER',
'SECRET',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
我的网站上有一些流量,达到了服务器的连接限制,网站抛出了这个错误,里面有我的普通密码!
致命错误:未捕获的异常“PDOException”,消息“SQLSTATE[08004] [1040] 太多连接”在/home/domain/html/index.php:xxx 堆栈跟踪:#0 /home/domain/html/index.php(64):PDO->__construct('mysql:host=loca...', 'USER', 'SECRET', Array) #1 {main} 在 /home/domain/html/index.php 第 64 行
具有讽刺意味的是,出于安全原因,我切换到PDO,所以这真的让我感到震惊,因为这个确切的错误是你可以在大多数使用简单HTTP泛洪的网站上非常容易引发的。
我现在已经将我的连接包装在一个尝试/捕获块中,但我仍然认为这是灾难性的!
我是PDO的新手,所以我的问题是:我必须做些什么才能考虑安全?如何以安全的方式建立连接?还有其他已知的安全漏洞需要我注意吗?