php – 这个PDO代码是否足够安全从SQL注入?
作者:互联网
参见英文答案 > Are PDO prepared statements sufficient to prevent SQL injection? 7个
正如标题所说:这段代码在SQL注入时是否足够安全?
有没有更好的方法来防止SQL注入?
<?php
$hostname = "xxx";
$username = "xxx";
$dbname = "xxx";
$password = "xxx";
$usertable = "xxx";
$yourfield = "xxx";
$db = new PDO('mysql:host='.$hostname.';dbname='.$dbname.'', $username, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$query = $db->prepare("INSERT INTO `$usertable` (first_name, last_name, username) VALUES (:first_name, :last_name, :username)");
$query->bindValue(':first_name', $_POST['first_name']);
$query->bindValue(':last_name', $_POST['last_name']);
$query->bindValue(':username', $_POST['username']);
$query->execute();
?>
解决方法:
如果您只使用上面代码中的准备语句,那么您就是安全的. AFIK没有其他可能通过SQL注入破解您的网站.
准备语句会强制执行命令中的数据,因此不能将任何内容作为SQL语句的一部分执行.
标签:html,php,sql,pdo,code-injection 来源: https://codeday.me/bug/20190901/1780678.html