如何清理这个特定的mysql查询?

时间:2010-03-29 07:38:16

标签: php wordpress security

我得到了这个SQL查询,其中post_title取自$ _GET

$ sql =“SELECT ID FROM posts WHERE posts.post_title ='5-design-web-colorful'”;

对消毒剂进行消毒并使其更安全的最佳方法是什么?

编辑:(根据要求)我正在尝试创建一个插件,用于隐藏特定类别(名为private)以及每个未登录的guest虚拟机的所有帖子。我已经挂钩'pre_get_posts'和'posts_selection'能够控制如何显示admin的特定帖子和类别,编写它们的成员,其他成员和访客。

该类别必须不存在。因此无法在前端的cat存档页面上显示。

我知道这与问题没有关系,因为我知道如何清理帖子的名称/标题。仅此而已。

2 个答案:

答案 0 :(得分:3)

使用mysql_real_escape_string,假设您使用MySQL。

答案 1 :(得分:3)

虽然这不能直接回答您的问题,但更好的方法是使用绑定参数。这可以保护您免受此类别的所有攻击媒介的攻击。<​​/ p>

http://php.net/manual/en/pdo.prepared-statements.php

http://www.php.net/manual/en/pdostatement.bindparam.php

对于你的例子:

$sth = $dbh->prepare("select id from $wpdb->posts where $wpdb->posts.post_title = ?");
$sth->bindParam(1, $str);
$sth->execute();

注意:这假设$ wpdb是安全的!