Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL查询因撇号而中断_Php_Sql_Sql Injection - Fatal编程技术网

Php SQL查询因撇号而中断

Php SQL查询因撇号而中断,php,sql,sql-injection,Php,Sql,Sql Injection,我使用html解析器从第三方站点抓取数据,然后将所需信息插入MySQL。碰巧很多信息中都包含撇号。问题在于,对于SQL查询,如下所示: INSERT INTO table (column) VALUE ('".$value."') 如果$variable中有撇号,则查询中断。有太多的信息,我手动插入它所有。这完全太耗时了。有什么建议可以让这个查询工作吗?这是一个典型的SQL注入缺陷。如果$value的值由用户控制,那么他们现在基本上可以做任何事情。刮取字符串中的引号脱离SQL字符串中的引号环境

我使用html解析器从第三方站点抓取数据,然后将所需信息插入MySQL。碰巧很多信息中都包含撇号。问题在于,对于SQL查询,如下所示:

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

如果
$variable
中有撇号,则查询中断。有太多的信息,我手动插入它所有。这完全太耗时了。有什么建议可以让这个查询工作吗?

这是一个典型的SQL注入缺陷。如果
$value
的值由用户控制,那么他们现在基本上可以做任何事情。刮取字符串中的引号脱离SQL字符串中的引号环境,因此允许执行任意SQL命令

简而言之,使用mysql\u real\u escape\u string


当然,这其中也有一个强制性的“mysql不推荐使用,请使用mysqli或PDO”部分。

这是一个典型的SQL注入缺陷。如果
$value
的值由用户控制,那么他们现在基本上可以做任何事情。刮取字符串中的引号脱离SQL字符串中的引号环境,因此允许执行任意SQL命令

简而言之,使用mysql\u real\u escape\u string


当然,其中也有强制性的“mysql不推荐使用,请使用mysqli或PDO”部分。

因此,换言之,您的查询在
SQL注入时易受攻击。最好使用
PDO
MySQLi
扩展,因为您标记了`PHP


花点时间阅读这篇文章:

因此,换句话说,您的查询在
SQL注入中容易受到攻击。最好使用
PDO
MySQLi
扩展,因为您标记了`PHP


花点时间阅读这篇文章:

如果数据有
,会发生什么;将表--
放入其中?
插入表(列)值(“.mysql\u real\u escape\u string($VALUE)。”)
但更好的方法是使用
PDO
mysqli
而不是
mysql
。准备好的语句答案在哪里?!?如果数据有
”,会发生什么;将表--
放入其中?
插入表(列)值(“.mysql\u real\u escape\u string($VALUE)。”)
但更好的方法是使用
PDO
mysqli
而不是
mysql
。准备好的语句答案在哪里?!?很抱歉我是个笨蛋。但是,什么是PDO?我知道sql注入,但当我的站点的用户正在使用我的站点时,我只在mysql\u real\u escape\u string()中包装查询中使用的内容的值。显然,我不会做对我自己不利的事。。特别是查看
准备
执行
部分。它允许您使用占位符构建查询,然后在执行查询时将这些占位符绑定到值。因为他们是这样做的,所以SQL注入并没有成为一个问题。非常感谢。我会调查的。这会增加执行时间吗?呃,也许吧?无论如何,这并不重要。如果你担心执行时间,我必须问你为什么要使用PHP…呃。不特别关心执行时间。只是想知道,对不起。我是个笨蛋。但是,什么是PDO?我知道sql注入,但当我的站点的用户正在使用我的站点时,我只在mysql\u real\u escape\u string()中包装查询中使用的内容的值。显然,我不会做对我自己不利的事。。特别是查看
准备
执行
部分。它允许您使用占位符构建查询,然后在执行查询时将这些占位符绑定到值。因为他们是这样做的,所以SQL注入并没有成为一个问题。非常感谢。我会调查的。这会增加执行时间吗?呃,也许吧?无论如何,这并不重要。如果你担心执行时间,我必须问你为什么要使用PHP…呃。不特别关心执行时间。只是想知道。