日期:2014-05-18  浏览次数:20507 次

strWhere的防sql注入
动软生成的public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)这个方法,strWhere是拼接的sql,怎么防止注入呢?动软生成的这个方法很不安全啊??

------解决方案--------------------
用参数代替
或者存储过程
------解决方案--------------------
探讨

用参数代替
或者存储过程

------解决方案--------------------
可以用参数代替 
若是想偷懒 也可以关键字过滤

http://topic.csdn.net/u/20120305/09/7d0ebb0a-cbc5-43ba-92e9-f476bb26556d.html
------解决方案--------------------
探讨
动软生成的public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)这个方法,strWhere是拼接的sql,怎么防止注入呢?动软生成的这个方法很不安全啊??

------解决方案--------------------
生成参数给的好奇怪,和写sql区别不大了
防注入要在前面做限制
道了sql这里应该都被屏蔽了才对
------解决方案--------------------
'转成'' 
在你调用public DataSet GetListByPage这个方法时传的参数中转
------解决方案--------------------
不要纠结一两个词儿、靠抠字眼来判断技术。请给出深一层的具体分析。
------解决方案--------------------
动网 --> 动软


断章取义你当然可以找到很多可攻击的点。例如看到网上有卖避孕套的,可以说“这样不就助长强奸团伙作案嘛”;看到商店里有卖菜刀的,可以说“这样不就助长杀人犯作案嘛,很不安全啊”。结果除了无以复加地搞繁琐以外,可能也没有什么进步。

动软或许在人家调用这个方法的时候,已经对strWhere中的内容进行了处理,例如对于sql语句中的字符串常量中的单引号替换为两个单引号,例如对与其它类型的数据验证过了确实那个类型的数据,人家做过了,那么掉用这个方法就非常自然,没有任何问题。这就好象是避孕套、菜刀一样,不用你在这一层再次搞什么实名过滤。