防止sql注入

using System;  
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
///Class1 的摘要说明
/// </summary>
•publicclass SQLInjectionHelper
•{
/// <summary>
/// 获取Get的数据
/// </summary>
• publicstaticbool ValidUrlGetData()
• {
bool result = false;

for (int i = 0; i < HttpContext.Current.Request.QueryString.Count; i++)
• {
• result = ValidData(HttpContext.Current.Request.QueryString[i].ToString());
if (result)
• {
//如果检测存在漏洞
break;
• }
• }
return result;
• }

/// <summary>
/// 获取Post的数据
/// </summary>
• publicstaticbool ValidUrlPostData()
• {
bool result = false;

for (int i = 0; i < HttpContext.Current.Request.Form.Count; i++)
• {
• result = ValidData(HttpContext.Current.Request.Form[i].ToString());
if (result)
• {
//如果检测存在漏洞
break;
• }
• }
return result;
• }

/// <summary>
/// 验证是否存在注入代码
/// </summary>
/// <param name="inputData"></param>
• publicstaticbool ValidData(string inputData)
• {
//里面定义恶意字符集合
string[] checkWord = { "and", "exec", "insert", "select", "delete", "update", "count", "from", "drop", "asc", "char", "*", "%", ";", ":", "\'", "\"", "chr", "mid", "master", "truncate", "char", "declare", "SiteName", "net user", "xp_cmdshell", "/add", "exec master.dbo.xp_cmdshell", "net localgroup administrators" };
if (inputData == null || inputData == "")
• {
• returnfalse;
• }
else
• {
foreach (string s in checkWord)
• {
//验证inputData是否包含恶意集合
if (inputData.ToString().ToLower().IndexOf(s) > -1)
• {
• returntrue;
• }
else
• {
continue;
• }
• }
• returnfalse;
• }

• }
•}
1.再在global.asax的BeginRequest中
再在global.asax的BeginRequest中


1.<pre class="html" name="code">bool result = false;
2.
3. if (Request.RequestType.ToUpper() == "POST")
4. {
5. result = SQLInjectionHelper.ValidUrlPostData();//Post数据检查
6. }
7. else
8. {
9. result = SQLInjectionHelper.ValidUrlGetData();//Get数据检查
10. }
11.
12. if (result)
13. {
14. Response.Write("您提交的数据有恶意字符!");
15. Response.End();
16. }

 

转载于:https://www.cnblogs.com/chinagg/archive/2012/02/22/2363577.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值