我知道 ,SQL注入基本是通过构造 sq语句造成的,小弟才疏学浅,最近在做一个网站,想防范SQ的注入攻击,由于是做完网站后才修改的量有些大。已经将一些基本的添加、删除、更新 操作全部参数化了。但是在 查询语句上还有部分 使用了SQ语句的拼接(主要是方便)。这些拼接大部分是这样的:
int ID = Convert.ToInt32(Session["ID"]);
或者 int id=Convert.ToInt32(Request.QueryString["id"];)
然后再 拼接语句: model = bll.getModel("id="+id);
像这种 拼接应该是不能注入的吧,参数变成了 数值类型。对注入了解不深,希望各位大虾知道知道。
要是你的sql db没有抛到外网的话,这样基本上够用了
只是你要在convert的时候注意try catch
可以,SQL 注入是,对系统的数据库进行破坏, 比如删除数据结构,表等,
所以对操作的异常不能显示在界面上,这样容易让人获取 数据结构,表名等,
比如:
'tablename' 无法找到
等等 错误信息都有可能会吧数据库信息暴露
只要禁止错误显示,字符类型控制死,字符串类型的过滤敏感sql语句关键字,这样就不太可能有注入的危险了。
呵呵,最好还是自己过滤一下
写个类库,所有接收的参数先用这个类库过滤,不然人家用软件猜解的注入点一样可以注入