SQL注入的防范
转载:http://blog.sina.com.cn/s/blog_5e5d98b50100dna3.html
1.不要使用sa用户连接数据库
2、新建一个public权限数据库用户,并用这个用户访问数据库
3、[角色]去掉角色public对sysobjects与syscolumns对象的select访问权限
4、[用户]用户名称-> 右键-属性-权限-在sysobjects与syscolumns上面打“×”
5、通过以下代码检测(失败表示权限正确,如能显示出来则表明权限太高):
DECLARE @T varchar(255),
@C varchar(255)
DECLARE Table_Cursor CURSOR FOR
Select a.name,b.name from sysobjects a,syscolumns b
where a.id=b.id and a.xtype= 'u ' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0)
BEGIN print @c
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
另外,总结如下:
1.尽量使用参数化查询
2.把一个单引号换成两个单引号
3.数据库权限的控制
4.过滤特殊字符串(如 select/update/drop/...)转载(http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html)
5.使用httputility.HtmlEnCode对输入的内容进行编码,彻底禁用其中的标签,然后对有用标签的进行replace还原。(.aspx页面 validateRequest=true 默认禁止)