首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql防注入有关问题

2012-12-17 
sql防注入问题如果程序中sql语句不使用参数。直接拼接,但我能确保sql语句中做为查询的条件是不会包含空格。

sql防注入问题
如果程序中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
貌似不会被注入吧
[最优解释]
去掉空格 只是防止注入的一个开始。
如果这样呢?
Select id ,name,add From users where name = '';drop table users;drop database XXX;--'
不就杯具了,参数是比较可靠且简便的防注入,建议使用。
[其他解释]
前端要预处理一些特殊字符,如--等,然后使用非动态sql。可以考虑使用存储过程以参数方式传入。另外可以考虑先加密再传入,这样也能减少注入的风险。
[其他解释]
引用:
';drop table users;drop database XXX;--
去掉空格能执行?
';droptableusers;dropdatabaseXXX;--
不能
[其他解释]
引用:
引用:
前端要预处理一些特殊字符,如--等,然后使用非动态sql。可以考虑使用存储过程以参数方式传入。另外可以考虑先加密再传入,这样也能减少注入的风险。
这个是肯定的,我只是在假如。
例如C#里



C# code



123

string sql ="Select id ,name,add From users where ……
按目前遇到的情况就不会,毕竟我不是专注攻击,没有太多的攻击方案。但是全部空格去掉的话,问题又来了,万一别人不打算攻击,而是正常使用,那说不定你就会使得别人登录失败之类的情况。
[其他解释]
引用:
引用:
按目前遇到的情况就不会,毕竟我不是专注攻击,没有太多的攻击方案。但是全部空格去掉的话,问题又来了,万一别人不打算攻击,而是正常使用,那说不定你就会使得别人登录失败之类的情况。
我的前提条件就是确保sql语句中做为查询的条件是不会包含空格。
也就是正常的这些做为条件数据是不含有空格的
但是这样,就拿你上面那个例子,除非你业务上规定了不能这样,不然我注册name的时候使用:发 粪 涂 墙,这一步如果你通过了,那么下次我登录的时候你就不能去掉空格,所以业务方面你也要考虑一下
[其他解释]

推荐贴讲的很清楚了  楼主把推荐贴再看几遍  1到100楼都看下
[其他解释]
感兴趣的话可以去谷歌关于这方面的东西学习一下
[其他解释]
拼接也没有关系啊;
提交数据前你过滤掉诸如   Drop、1=1、单引号(此类特殊标点符号)、……之类的文字不就OK了……

[其他解释]
直接过滤'为''就可以了,
前提是这个要放在一对''里面
[其他解释]
去掉空格


单引号改双引号
[其他解释]
';drop table users;drop database XXX;--
去掉空格能执行?
';droptableusers;dropdatabaseXXX;--
[其他解释]
引用:
前端要预处理一些特殊字符,如--等,然后使用非动态sql。可以考虑使用存储过程以参数方式传入。另外可以考虑先加密再传入,这样也能减少注入的风险。

这个是肯定的,我只是在假如。
例如C#里


string sql ="Select id ,name,add From users where name = '{0}';"
db.GetData(string.Formart(sql,txtName.Text.Replace(" ", "")));

这样会造成注入吗?
[其他解释]
引用:
按目前遇到的情况就不会,毕竟我不是专注攻击,没有太多的攻击方案。但是全部空格去掉的话,问题又来了,万一别人不打算攻击,而是正常使用,那说不定你就会使得别人登录失败之类的情况。

我的前提条件就是确保sql语句中做为查询的条件是不会包含空格。


也就是正常的这些做为条件数据是不含有空格的
[其他解释]
哦 发现你的昵称不错,挺有意境的
[其他解释]

引用:
拼接也没有关系啊;
提交数据前你过滤掉诸如   Drop、1=1、单引号(此类特殊标点符号)、……之类的文字不就OK了……
这个貌似很多的哦
[其他解释]
引用:
推荐贴讲的很清楚了  楼主把推荐贴再看几遍  1到100楼都看下

防注入的知识我看了很多,但是注入的攻击的文章确很少见,
我在做项目的时候,发现只要查询的表的某些列不允许有空格做条件查询时(比如产品编号、单号等等),
只要在拼接成查询条件时,我只需把空格去掉就能防止我目前知道的SQL注入方法。
但我不知道是不是还有其它注入方法
[其他解释]
引用:
引用:
推荐贴讲的很清楚了  楼主把推荐贴再看几遍  1到100楼都看下
防注入的知识我看了很多,但是注入的攻击的文章确很少见,
我在做项目的时候,发现只要查询的表的某些列不允许有空格做条件查询时(比如产品编号、单号等等),
只要在拼接成查询条件时,我只需把空格去掉就能防止我目前知道的SQL注入方法。
但我不知道是不是还有其它注入方法
这种东西就像如何防御病毒一样,不可能告诉你太多,只能告诉你原理而已。因为教你如何编写病毒是犯法的。如何教你注入也差不多。所以去明白原理更实际

热点排行