SQL注入"></title><script src 解决办法
|
admin
2011年1月30日 21:58
本文热度 3172
|
最近接收一个烂摊子,数据库都被sql注入过一两次了,到处都可以看到标题上那种东西,
看得小妹我想死,我是燥性子看着有火,在网站上看了n多防注入的方法,记录一下
一种是从数据库入手的,我这个烂摊子是用的sql server2000的,
---------------------------------------------------------------------------------------------------------
推荐用SQL SERVER 2005 ,其安全性及功能都更为强大
一是不要用SA权限
二是删除表的sys.all_colums和sys.all_objects的select权限
注意:这里SQL SERVER 2005 及 2000不一样,
SQL SERVER 2005
这两个权限在相应数据库展开下视图=》视图表中
把pubilc的select权限去掉,在属性里取消掉SELECT权限
SQL SERVER 2000
在2000里,名字不一样,位置也不是在视图里,而是直接在表中,如下
然后把pubilc的select权限去掉
三、凡是访问数据库的用户,不要用SA,新建一个即可,其服务器角色不用设置,
全为空,只需要设数据库映射即可,然后数据库映射只给db_ower、pubilc权限
-------------------------------------------------------------------------------------------------------------
二个是从代码上入手
尽可能全的过滤SQL敏感的语句,
先把数据库里面注入的代码用Replace()替换掉,
再在Global文件里里加入
protected void Application_BeginRequest(Object sender, EventArgs e)
{
//SQL防注入
string Sql_1 = "exec|insert+|select+|delete+|update+|count|chr|mid|master+|truncate|char|declare|drop+|drop+table|creat+|creat+table";
string Sql_2 = "exec+|insert|insert+|delete+|update+|count(|count+|chr+|+mid(|+mid+|+master+|truncate+|char+|+char(|declare+|drop+|creat+|drop+table|creat+table";
string[] sql_c = Sql_1.Split('|');
string[] sql_c1 = Sql_2.Split('|');
if (Request.QueryString != null)
{
foreach (string sl in sql_c)
{
if (Request.QueryString.ToString().ToLower().IndexOf(sl.Trim()) >= 0)
{
Response.Write("警告!你的IP已经被记录!不要使用敏感字符!");//
Response.Write(sl);
Response.Write(Request.QueryString.ToString());
Response.End();
break;
}
}
}
if (Request.Form.Count > 0)
{
string s1 = Request.ServerVariables["SERVER_NAME"].Trim();//服务器名称
if (Request.ServerVariables["HTTP_REFERER"] != null)
{
string s2 = Request.ServerVariables["HTTP_REFERER"].Trim();//http接收的名称
string s3 = "";
if (s1.Length > (s2.Length - 7))
{
s3 = s2.Substring(7);
}
else
{
s3 = s2.Substring(7, s1.Length);
}
if (s3 != s1)
{
Response.Write("警告!你的IP已经被记录!不要使用敏感字符!");//
Response.End();
}
}
}
}
------------------------------------------------------------------------------------------------------------------
三个是使用防注入的软件防火墙Safe3 IIS Firewall
http://hi.baidu.com/soueou/blog/item/796bb9068127887e03088178.html
该文章在 2011/1/30 21:58:58 编辑过