最近接收一個爛攤子,數據庫都被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 編輯過