小编sel*_*ape的帖子

为什么PDO在连接失败时会打印我的密码?

我有一个简单的网站,我使用PDO建立与Mysql服务器的连接.

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

我的网站上有一些流量,达到服务器连接限制,网站抛出此错误,其中包含我的PLAIN密码!

致命错误:/home/domain/html/index.php:xxx中带有消息"SQLSTATE [08004] [1040]连接太多"的未捕获异常"PDOException"堆栈跟踪:#0 /home/domain/html/index.php (64):PDO - > __ construct('mysql:host = loca ...','USER','SECRET',Array)在第64行的/home/domain/html/index.php中抛出#1 {main}

具有讽刺意味的是,出于安全考虑我转向PDO,所以这让我感到震惊,因为这个确切的错误是你可以在大多数使用简单的http泛滥的网站上轻易引起的.

我现在已将我的连接包装在try/catch块中,但我认为这仍然是灾难性的!

我是PDO的新手,所以我的问题是:我需要做些什么来考虑安全?如何以安全的方式建立连接?是否还有其他已知的安全漏洞,我必须注意这个漏洞?

php mysql security connection pdo

53
推荐指数
3
解决办法
9148
查看次数

标签 统计

connection ×1

mysql ×1

pdo ×1

php ×1

security ×1