如果程序中sql语句不使用参数。
直接拼接,但我能确保sql语句中做为查询的条件是不会包含空格。
比如 Select id ,name,add From users where name = '';其中的name是不能保护空格的。
我在拼接sql语句的时候,
得到name的字符串进行处理把所有空格都去掉,这样能不能防止sql注入?
如何输入的是:
1' or 1=1 or '1'='1
处理之后变成
1'or1=1or'1'='1
貌似不会被注入吧
直接拼接,但我能确保sql语句中做为查询的条件是不会包含空格。
比如 Select id ,name,add From users where name = '';其中的name是不能保护空格的。
我在拼接sql语句的时候,
得到name的字符串进行处理把所有空格都去掉,这样能不能防止sql注入?
如何输入的是:
1' or 1=1 or '1'='1
处理之后变成
1'or1=1or'1'='1
貌似不会被注入吧
如果这样呢?
Select id ,name,add From users where name = '';drop table users;drop database XXX;--'
不就杯具了,参数是比较可靠且简便的防注入,建议使用。
去掉空格能执行?
';droptableusers;dropdatabaseXXX;--
例如C#里
string sql ="Select id ,name,add From users where name = '{0}';"
db.GetData(string.Formart(sql,txtName.Text.Replace(" ", "")));这样会造成注入吗?
也就是正常的这些做为条件数据是不含有空格的
提交数据前你过滤掉诸如 Drop、1=1、单引号(此类特殊标点符号)、……之类的文字不就OK了……
我在做项目的时候,发现只要查询的表的某些列不允许有空格做条件查询时(比如产品编号、单号等等),
只要在拼接成查询条件时,我只需把空格去掉就能防止我目前知道的SQL注入方法。
但我不知道是不是还有其它注入方法