一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - 在Global.asax文件里實現(xiàn)通用防SQL注入漏洞程序(適應(yīng)于post/get請求)

在Global.asax文件里實現(xiàn)通用防SQL注入漏洞程序(適應(yīng)于post/get請求)

2019-10-18 11:31asp.net技術(shù)網(wǎng) ASP.NET教程

可使用Global.asax中的Application_BeginRequest(object sender, EventArgs e)事件來實現(xiàn)表單或者URL提交數(shù)據(jù)的獲取,獲取后傳給SQLInjectionHelper類ValidUrlData方法來完成檢查

首先,創(chuàng)建一個SQLInjectionHelper類完成惡意代碼的檢查 
代碼如下: 

復(fù)制代碼代碼如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Text.RegularExpressions; 
/// <summary> 
///SQLInjectionHelper 的摘要說明 
/// </summary> 
public class SQLInjectionHelper 

/// <summary> 
/// 獲取Post的數(shù)據(jù) 
/// </summary> 
/// <param name="request"></param> 
/// <returns></returns> 
public static bool ValidUrlData(string request) 

bool result = false; 
if (request == "POST") 

for (int i = 0; i < HttpContext.Current.Request.Form.Count; i++) 

result = ValidData(HttpContext.Current.Request.Form[i].ToString()); 
if (result) 

break; 



else 

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> 
/// 驗證是否存在注入代碼 
/// </summary> 
/// <param name="inputData"></param> 
/// <returns></returns> 
private static bool ValidData(string inputData) 

//驗證inputData是否包含惡意集合 
if (Regex.IsMatch(inputData, GetRegexString())) 

return true; 

else 

return false; 


/// <summary> 
/// 獲取正則表達式 
/// </summary> 
/// <returns></returns> 
private static string GetRegexString() 

//構(gòu)造SQL的注入關(guān)鍵字符 
string[] strChar = { "and", "exec", "insert", "select", "update", "delete", "count", "from", "drop", "asc", "or", "char", "%", ";", ":", "\'", "\"", "-", "chr", "master", "mid", "truncate", "declare", "char", "SiteName", "/add", "xp_cmdshell", "net user", "net localgroup administrators", "exec master.dbo.xp_cmdshell" }; 
string str_Regex = ".*("; 
for (int i = 0; i < strChar.Length - 1; i++) 

str_Regex += strChar[i] + "|"; 

str_Regex += strChar[strChar.Length - 1] + ").*"; 
return str_Regex; 


有此類后即可使用Global.asax中的Application_BeginRequest(object sender, EventArgs e)事件來實現(xiàn)表單或者URL提交數(shù)據(jù)的獲取,獲取后傳給SQLInjectionHelper類ValidUrlData方法來完成檢查 
代碼如下 

復(fù)制代碼代碼如下:


protected void Application_BeginRequest(object sender, EventArgs e) 

bool result = false; 
result = SQLInjectionHelper.ValidUrlData(Request.RequestType.ToUpper()); 
if (result) 

Response.Write("您提交的數(shù)據(jù)有惡意字符"); 
Response.End(); 


下面以一個小程序測試: 
創(chuàng)建一個頁面,如下 

復(fù)制代碼代碼如下:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<br /> 
<asp:Button ID="btnPost" runat="server" Text="獲取Post數(shù)據(jù)" 
onclick="btnPost_Click" /> 
</div> 
<asp:Button ID="btnGet" runat="server" Text="獲取Get數(shù)據(jù)" onclick="btnGet_Click" /> 
</form> 
</body> 
</html> 


分別添加單擊事件,如下 

復(fù)制代碼代碼如下:


protected void btnPost_Click(object sender, EventArgs e) 


protected void btnGet_Click(object sender, EventArgs e) 

Response.Redirect("Default.aspx?a=1&b=2&c=3"); 


在文本框中輸入非法字符串,無論post請求還是get請求,都會被防SQL注入程序所截獲

在Global.asax文件里實現(xiàn)通用防SQL注入漏洞程序(適應(yīng)于post/get請求)

                      圖1 測試防SQL注入程序的頁面

在Global.asax文件里實現(xiàn)通用防SQL注入漏洞程序(適應(yīng)于post/get請求)

                               圖2 錯誤信息

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: chinesemature老女人 | 黄色a| 精品夜夜澡人妻无码AV蜜桃 | 星空无限传媒视频在线观看视频 | 91xj视频| 荡女淫春2古装 | 99国产高清久久久久久网站 | 狠狠色狠狠色综合曰曰 | 高清色黄毛片一级毛片 | 精品久久久久中文字幕日本 | 欧美特黄三级在线观看 | 毛片免费的| 免费看国产一级特黄aa大片 | 久久毛片视频 | 国产免费美女视频 | 特黄特色大片免费视频大全 | 国产99久久精品一区二区 | 兽操人| 美女奶口隐私免费视频网站 | 欧洲美女人牲交一级毛片 | free哆拍拍免费永久视频 | 五月桃花网婷婷亚洲综合 | 4444www免费看| 色狠狠成人综合网 | 日本一区二区不卡久久入口 | caoporm国产精品视频免费 | 亚洲九九爱 | 91入口免费网站大全 | xxx88视频在线观看 | 白虎喷水 | 人人艹在线视频 | 亚洲午夜精品久久久久 | 男人与雌性宠物交啪啪小说 | 91porn最新网址 | 日本高h | 猛男壮男受bl爽哭了高h | 欧美亚洲天堂网 | 无遮无挡免费视频 | 99视频都是精品热在线播放 | 99久久香蕉国产综合影院 | 精品四虎 |