我很好奇是否可以通过从字符串输入中删除所有空格来防止 SQL 注入攻击?
我一直在OWASP阅读 SQL Injection ,但他们没有提到任何关于删除空格的内容,所以我很好奇它为什么会或不会起作用?
我正在看这个问题,它询问关于trim
,而最重要的答案是这样的:
不,添加修剪不会阻止 sql 注入。
trim
仅删除字符串外部的空间。Select * from aTable where name like '%'+@SearchString+'%'
如果你 @SearchString 持有类似的东西
'' update aTable set someColumn='JackedUpValue' where someColumn like '
然后当你把它们放在一起并动态执行它时,你会得到
Select * from aTable where name like '%' update aTable set someColumn='JackedUpValue' where someColumn like '%'
但是,如果您使用该搜索字符串
update aTable set someColumn='JackedUpValue' where someColumn like
并执行了这个问题中显示的操作,你不会得到
updateaTablesetsomeColumn='JackedUpValue'wheresomeColumnlike
哪个不应该执行,对吗?
我很好奇是否有任何形式的 SQL 注入可以解决这个问题?有没有一个字危险的命令?如果这可以被击败,那么删除空格是否至少有助于防御?
注意:我问这个问题纯粹是出于好奇,而不是为了规避使用 SQL 注入预防的“正确”方法。