可以说通过限制此符号,我们限制SQL注入。
因为据我所知,大多数SQL注入都是通过在开头加上引号或双引号来关闭输入,然后用分号关闭句子。
请帮助我,如果它是真的。如果不是真的,请提供一个例子,说明如何不使用这些字符注入是可能的。
答案 0 :(得分:2)
使用PDO可以防止SQL注入。你必须逃避输入并消毒它。 例如,您有查询:
Select col1 from table where id=$input_from_user
现在查看用户输入是12还是1 == 1,并在查询中直接输出。查询将始终返回结果。
PDO可以防止此类攻击。
答案 1 :(得分:1)
我喜欢这个,它通过你的支票滑过:
?id=13 UNION SELECT 1,user(),3,4,5,6,7
为什么要打扰<FORM>
,只需将其插入网址即可。
答案 2 :(得分:1)
我不知道mysql的语法,这就是为什么我给出了基于sqlserver的例子,所以不要为此给出减号。
是的,这样就足够了,但仍有一些其他保留的工作会导致问题,如&#39;&amp;&#39;,&#39;&lt;&#39;&#39;&gt;& #39;用于xml字段或xml操作。
当我们使用内联查询时,Sql注入工作(因此总是使用过程来避免sql注入)
Declare @var1 nvarchar(100) = 'column 1 like ''' + 'abc' + '%' -- suppose this will also pass from your c# or vb.net or java code as ("column1 like 'abc'")
Declare @strsql nvarchar(500)
@strsql = 'Select * from table where ' + @var1
exec @strsql
如果你给sql注入值,因为上面的值将返回一切,即使用户没有权限:1 = 1 -
Declare @strsql nvarchar(500)
@strsql = 'Select * from table where 1=1--'
exec @strsql -- the sql injection will remove your all succeeding value