我应该使用PDO来清理我的SQL查询,还是仅使用"mysql_real_escape_string"就足够了?

5

我有一个简单的分类广告网站...

分类广告被插入到MySql表中,我唯一用来清理用户输入的是mysql_real_escape_string

这样足够吗?

PDO当然是最好的方法,但是在这个查询中,使用只有mysql_real_escape_string和PDO的区别到底是什么呢?

   SELECT * FROM table_name WHERE table_name.classified = '$classified';

或者

   INSERT INTO table_name (input1, input2) VALUES ('$input1', $input2);

谢谢


1
转义很容易被忘记。参数化查询是一种固有更安全的方法论。(顺便说一下,你的例子似乎都没有使用这种方法)。PDO的另一个优点是潜在的速度增益。目前这仅仅是理论上的,因为PDO MySQL驱动程序仍然采用转义而不是绑定参数的方式。 - mario
1
除非你真的需要数据库抽象层,否则我们建议你不要使用PDO或MySql,而是使用MySqli。它支持绑定和转义。 - Gordon
1个回答

2

我认为mysql_real_escape_string足以防止SQL注入攻击并将数据存储到数据库中。但是其他验证也是很有必要的,这样可以使数据集更加规范化,减少包含垃圾数据的可能性。

对于呈现任何这些数据,过滤(如Drupal风格等)也是一个好主意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接