首页 新闻 会员 周边 捐助

防sql 注入, 项目已经写完 ,而且 sql 也不是用参数化写的 ,怎么 破啊

0
悬赏园豆:5 [待解决问题]

防sql  注入, 项目已经写完 ,而且 sql  也不是用参数化写的  ,怎么 破啊

远方的人的主页 远方的人 | 初学一级 | 园豆:4
提问于:2013-07-04 12:08
< >
分享
所有回答(5)
0

在DBHelper的地方,对每次的sql进行关键字校验~

幻天芒 | 园豆:37205 (高人七级) | 2013-07-04 12:39

DBHelper 这个没有用 啊 ,  我们  前台和核心是分开的  的 , 如果在页面过滤字串 ,那不知道要设定多少用 

支持(0) 反对(0) 远方的人 | 园豆:4 (初学一级) | 2013-07-04 12:47

@远方的人: 前台设定的话,可能修改的地方太多了。你在统一访问数据库的那个类里面去限定。

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2013-07-04 12:48

@幻天芒: 我们用的是  webservice 接口 ,我是前台 ,核心 我管不了 ,  核心给我个接口 ,我传request 就行 ,核心返回response  , 这个怎么办 

支持(0) 反对(0) 远方的人 | 园豆:4 (初学一级) | 2013-07-04 13:09

@远方的人: 如果request中有sql语句,那么替换之后再扔到后台去~

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2013-07-04 16:37
0

你在传的request里直接写sql吗?  那你的sql如何生成的呢, 直接字符串拼接吗,

用下面这种方法确保只能传整数

name GetNameForId(int id)

{

  string query = string.Format("select name where id = {0}", id);

     var request = new Request(query);

  ....

}

gunsmoke | 园豆:3592 (老鸟四级) | 2013-07-04 13:18

不是了 , 我说的 request  就相当与是  一个  bean  , 相当于条件查询sql 的参数 值 的一个bean ,我不写sql  ,用的是webservice 接口 

支持(0) 反对(0) 远方的人 | 园豆:4 (初学一级) | 2013-07-04 13:26
0

进行替换吧!

把敏感词汇 replace掉

     strTemp = strTemp.Replace(";", "");
            strTemp = strTemp.Replace("%", "");
            strTemp = strTemp.Replace("<", "");
            strTemp = strTemp.Replace(">", ""); 

二十三号同学 | 园豆:974 (小虾三级) | 2013-07-04 13:42

项目有好多  输入框  这 要 替换到啥时候啊 啊啊 ,这是想搞死我啊  

支持(0) 反对(0) 远方的人 | 园豆:4 (初学一级) | 2013-07-04 13:44

@远方的人: 你可以在sql执行的类里面,进行一些替换

不过替换的肯定不会最全面

只能基于你的特殊情况,才出此下策,最好是参数化的SQL

支持(0) 反对(0) 二十三号同学 | 园豆:974 (小虾三级) | 2013-07-04 13:58

@二十三号同学: 没机会了 , 项目整体已经完成 ,垃圾项目 ,现在要搞 注入 ,搞不下去了 

支持(0) 反对(0) 远方的人 | 园豆:4 (初学一级) | 2013-07-04 14:42

@远方的人:在天朝。。。。。。你懂得

支持(0) 反对(0) 二十三号同学 | 园豆:974 (小虾三级) | 2013-07-04 14:57
0

防sql注入是后台的事。如果只写前台,别人完全可以跳过页面,通过url+参数直接提交。

angelshelter | 园豆:9914 (大侠五级) | 2013-07-05 11:57
0

这是架构师的事情啊,兄弟已经做到架构师了??

kylin.chen | 园豆:983 (小虾三级) | 2013-07-05 18:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册