这是通过PDO使用SELECT的安全方式
可能重复:
在PHP中停止SQL注入的最佳方法
如何使用PDO清理输入?
我通过$_GET
拉入一个id。 我刚开始使用PDO,但我不确定这是否安全。 显然,下面的代码使用$_GET
来获取一个id。 在我将它放入查询之前,我根本没有对它进行消毒。 这安全吗?
<?php
if (isset($_GET['id'])) {
$blogid = $_GET['id'];
$post = $dbh->query("SELECT id, title, slug, body, image, author, date, category from blog WHERE id='$blogid' ORDER BY date DESC");
$row = $post->fetch(); ?>
在我将它放入查询之前,我根本没有对它进行消毒
不。 不安全。 :)
您需要转义它,或者使用准备好的语句。 通过PDO,我会使用一个准备好的声明:
if (isset($_GET['id']) && is_string($_GET['id'])) {
$blogid = $_GET['id'];
$stmt = $dbh->prepare("SELECT id, title, slug, body, image, author, date, category from blog WHERE id= :id ORDER BY date DESC");
$stmt->execute(array('id' => $_GET['id']));
$row = $stmt->fetch();
}
在SQL查询中插入变量而不进行消毒/转义是绝对安全的。
你可以做什么,如果你不想自己逃脱,就是使用prepare
语句并bind
你的参数。
你可以检查PHP文档...
关于如何使用PDO准备:http://php.net/manual/en/pdo.prepare.php
如何使用参数绑定:http://www.php.net/manual/en/pdostatement.bindparam.php
链接地址: http://www.djcxy.com/p/93705.html