在DBHelper的地方,对每次的sql进行关键字校验~
DBHelper 这个没有用 啊 , 我们 前台和核心是分开的 的 , 如果在页面过滤字串 ,那不知道要设定多少用
@远方的人: 前台设定的话,可能修改的地方太多了。你在统一访问数据库的那个类里面去限定。
@幻天芒: 我们用的是 webservice 接口 ,我是前台 ,核心 我管不了 , 核心给我个接口 ,我传request 就行 ,核心返回response , 这个怎么办
@远方的人: 如果request中有sql语句,那么替换之后再扔到后台去~
你在传的request里直接写sql吗? 那你的sql如何生成的呢, 直接字符串拼接吗,
用下面这种方法确保只能传整数
name GetNameForId(int id)
{
string query = string.Format("select name where id = {0}", id);
var request = new Request(query);
....
}
不是了 , 我说的 request 就相当与是 一个 bean , 相当于条件查询sql 的参数 值 的一个bean ,我不写sql ,用的是webservice 接口
进行替换吧!
把敏感词汇 replace掉
strTemp = strTemp.Replace(";", "");
strTemp = strTemp.Replace("%", "");
strTemp = strTemp.Replace("<", "");
strTemp = strTemp.Replace(">", "");
项目有好多 输入框 这 要 替换到啥时候啊 啊啊 ,这是想搞死我啊
@远方的人: 你可以在sql执行的类里面,进行一些替换
不过替换的肯定不会最全面
只能基于你的特殊情况,才出此下策,最好是参数化的SQL
@二十三号同学: 没机会了 , 项目整体已经完成 ,垃圾项目 ,现在要搞 注入 ,搞不下去了
@远方的人:在天朝。。。。。。你懂得
防sql注入是后台的事。如果只写前台,别人完全可以跳过页面,通过url+参数直接提交。
这是架构师的事情啊,兄弟已经做到架构师了??