整站如何防止SQL攻擊_.Net教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
推薦:總結(jié).NET開(kāi)發(fā)中ADO.NET的應(yīng)用一、DataTable DataTable表示內(nèi)存中數(shù)據(jù)的一個(gè)表,它完全是在內(nèi)存中的一個(gè)獨(dú)立存在,包含了這張表的全部信息。DataTable可以是從通過(guò)連接從數(shù)據(jù)庫(kù)中讀取出來(lái)形成的一個(gè)表,一旦將內(nèi)容讀到DataTable中,此DataTable就可以跟數(shù)據(jù)源斷開(kāi)而獨(dú)立存在;也可以是完
asp.net網(wǎng)站防止SQL注入攻擊,通常的辦法是每個(gè)文件都修改加入過(guò)濾代碼,這樣很麻煩,下面介紹一種辦法,可以從整個(gè)網(wǎng)站防止注入。只要做到以下三點(diǎn),網(wǎng)站就會(huì)比較安全了而且維護(hù)也簡(jiǎn)單。
一、數(shù)據(jù)驗(yàn)證類(lèi)
parameterCheck.cs
| public class parameterCheck{ public static bool isEmail(string emailString){ return System.Text.RegularExpressions.Regex.IsMatch(emailString, "[’\\w_-]+(\\. [’\\w_-]+)*@[’\\w_-]+(\\.[’\\w_-]+)*\\.[a-zA-Z]{2,4}"); } public static bool isInt(string intString){ return System.Text.RegularExpressions.Regex.IsMatch(intString ,"^(\\d{5}-\\d{4})| (\\d{5})$"); } public static bool isUSZip(string zipString){ return System.Text.RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9] +$"); } } |
二、Web.config
在你的Web.config文件中,在下面增加一個(gè)標(biāo)簽,如下:
| <appSettings> <add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode- USzip" /> </appSettings> |
其中key是后面的值為“OrderId-int32”等,其中“-”前面表示參數(shù)的名稱(chēng)比如:OrderId,后面的int32表示數(shù)據(jù)類(lèi)型。
三、Global.asax
在Global.asax中增加下面一段:
| protected void Application_BeginRequest(Object sender, EventArgs e){ String[] safeParameters = System.Configuration.ConfigurationSettings.AppSettings ["safeParameters"].ToString().Split(’,’); for(int i= 0 ;i < safeParameters.Length; i++){ String parameterName = safeParameters[i].Split(’-’)[0]; String parameterType = safeParameters[i].Split(’-’)[1]; isValidParameter(parameterName, parameterType); } } public void isValidParameter(string parameterName, string parameterType){ string parameterValue = Request.QueryString[parameterName]; if(parameterValue == null) return; if(parameterType.Equals("int32")){ if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx"); } else if (parameterType.Equals("double")){ if(!parameterCheck.isDouble(parameterValue)) Response.Redirect("parameterError.aspx"); } else if (parameterType.Equals("USzip")){ if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx"); } else if (parameterType.Equals("email")){ if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx"); } } |
以后需要修改的時(shí)候大家只修改以上三個(gè)文件就可以了,整個(gè)系統(tǒng)的維護(hù)效率將會(huì)提高,當(dāng)然你也可以根據(jù)自己的需要增加其它的變量參數(shù)和數(shù)據(jù)類(lèi)型等等。
分享:關(guān)于Gridview的多種使用方法總結(jié)asp.net中 Gridview的多種使用方法總結(jié),具體如下面 截圖,并包括詳細(xì)源代碼注釋?zhuān)枰恼?qǐng)下載。 1:在Gridview中無(wú)須編寫(xiě)后臺(tái)代碼,直接實(shí)現(xiàn)增除刪改 2:在Gridview中添加新記錄 3:在Gridview中實(shí)現(xiàn)編輯和更新操作 4:在Gridview中實(shí)現(xiàn)一次性更新所有記錄
相關(guān).Net教程:
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶(hù)端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 基于自定義Unity生存期模型PerCallContextLifeTimeManager的問(wèn)題
- dropdownlist,datagrid數(shù)據(jù)綁定簡(jiǎn)單實(shí)現(xiàn)
- 使用asp.net的pageDataSource中時(shí)索引問(wèn)題解決方法
- 一個(gè)不被flash、select、activex遮擋的、跨frame的無(wú)限分級(jí)菜單
- 談asp.net會(huì)話(huà)狀態(tài)
- asp.net中使用repeater和PageDataSource搭配實(shí)現(xiàn)分頁(yè)代碼
- ASP.NET MVC是怎樣實(shí)現(xiàn)自己的視圖引擎的
- ASP.NET 2.0發(fā)送電子郵件中存在的問(wèn)題
- 解讀一個(gè)簡(jiǎn)單程序的反編譯
- 給初學(xué).net的您幾點(diǎn)建議
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-整站如何防止SQL攻擊
。