由于撇号导致SQL查询中断

时间:2012-10-11 08:43:03

标签: php sql sql-injection

我正在使用html解析器从第三方网站抓取数据,然后将我需要的信息插入MySQL。事实上很多信息都包含撇号。麻烦在于SQL查询如下:

INSERT INTO table (column) VALUE ('".$value."')

如果$variable中有撇号,则查询会中断。我手动插入所有信息的信息太多了。这将耗费太多时间。我有什么建议让这个查询起作用吗?

2 个答案:

答案 0 :(得分:4)

这是一个经典的SQL注入漏洞。如果$value的值由用户控制,他们现在基本上可以做任何事情。被删除字符串中的引号会突破SQL字符串中的引用环境,因此允许执行任意SQL命令。

简短的回答是,使用mysql_real_escape_string

当然,还有必要的“mysql_ *已被弃用,使用mysqli或PDO”这一部分。

答案 1 :(得分:1)

换句话说,您的查询容易被SQL Injection攻击。更好地使用PDOMySQLi扩展,因为您标记了`PHP。

请花些时间阅读本文:Best way to prevent SQL injection in PHP?