PHP - 单引号过滤

时间:2010-09-07 00:21:11

标签: php escaping sql-injection user-input markdown

我有一些保存在PHP字符串中的HTML代码

$str = "<font size=2 color=#e0e0e0>you don't have a clue</font>";

我必须将此字符串写入DB,以便$str必须成为查询的一部分..

现在无论我的查询...只要字符串中没有' 单引号,它就能正常工作....

以下两个中的任何一个都将解决我的问题

    1. 一些内置方法解析PHP字符串并从中删除所有' 单引号 ...我记得在通过 SQL注入。

      • 如何允许' 单引号通过查询提交给数据库而不更改查询,即如何使此查询正常工作

      $str = "Don't";

      mysql_query("UPDATE content SET text='".$str."' WHERE p_ID='1');

注意:

  • 我们无法让用户照顾它或遵循技术成功'提交
  • $str来自用户输入...我正在使用 WMD PHP Markdown ,所以现在您知道问题所在...... < / LI>

2 个答案:

答案 0 :(得分:3)

使用mysql_real_escape_string

mysql_query("UPDATE content SET text='". mysql_real_escape_string($str)."' WHERE p_ID='1'");

在将用户输入提交到数据库之前没有转义用户输入是一个安全漏洞,它允许用户注入一个定制的查询块,它将改变您的原始查询,并随之执行。它不仅允许合法用户提交包含单引号的内容,还可以防止恶意用户sql-injecting查询。

答案 1 :(得分:1)

您应该考虑使用PDOparameterized queries