通過HttpModule實現資料庫防注入

2021-04-06 19:30:34 字數 2543 閱讀 4425

昨天剛把資料庫防注入的原型發了上去,發覺好像還漏了點東西,現在把它全部補上.

sql注入是常常被一些菜鳥級黑客高手慣用的手法, 就是基於sql的注入實現, 防注入程式其實就是處理http請求,把get和post的請求資料中做過濾.

通過相應的關鍵字去識別是否有 sql注入攻擊**

string sqlstr = "and |exec |insert |select |delete |update |count | * |chr |mid |master |truncate |char |declare ";

在下面的**中你要看以上面的定義, 其實就是定義要識別的關鍵字.

而我們處理請求一般都是通過 request.querystring / request.form 這兩種, 我們可以專門寫乙個類去處理這些請求, 但如果在每乙個處理環節都載入這個類去做處理, 那太麻煩了. 

如果寫乙個isapi當然也能完成這個功能的實現, 但在.net 中 httpmodule幫我們實現了類似於isapi filter的功能, 所以改為通過 httpmodule 去處理這些事情是最好不過的啦.

我們現在要用到的只是裡面的beginrequest這個事件, 所以只需要註冊beginrequest這個事件就可以了.

記得在前面載入相應名字空間哦.

using system;

using system.web;

忘了還得加個自定名字空間 namespace theme.script

完整的類如下:

///分析使用者請求是否正常

70///

71///

傳入使用者提交資料

72///

返回是否含有sql注入式攻擊**

7**rivate

bool

processsqlstr(

string

str)

7488}89

}90}91

catch

9295

return

returnvalue;96}

97#endregion98}

99100}

101102

編寫完處理後,我們把它生成類庫請在bin的目錄下

csc.exe 

/t:library sqlstrany.cs 

/r:c:/windows/microsoft.net/framework/v1.

1.4322

/microsoft.visualbasic.dll 

編譯完後你會發現已經生成了乙個 sqlstrany.dll 檔案,這個就是我們需要的.

最後在 web.config 中註冊它就可以用了.

最後別忘了在 web.config 中加入錯誤處理的導向頁面哦.

<

add key="

customerrorpage

"value="

../error.html

"/>

至此,所有步驟就完成了, 打你的專案執行它, 在url後加上 select / and ...試試

通過HttpModule實現IP位址遮蔽功能

本文將介紹通過實現ihttpmodule介面,進行判斷和遮蔽ip位址的方法。httomodule的基礎知識可以參閱這裡 閱讀前請先參閱 細說asp.net的ip位址遮蔽功能設計 首先,新建乙個類,名為ipfilter,繼承自ihttpmodule介面 實現ihttpmodule介面,並為contex...

HttpModule實現使用者身份驗證

本文資源全部來自於園子裡各牛 之前看jimmyzhang的asp.net執行原理,開篇既說要明白驗證就要先看asp.net執行原理,不然用控制項就是 微軟的使用者 了 現在看到這總算反應過來,原來驗證是在httpmodule裡進行的 目前觀點 首先來看一下httpmodule的生命週期 為了證明這個...

通過SharedPreference實現共享資料

如果程式b想要訪問程式a的sharedpreference可以通過下面的語句來實現 try catch namenotfoundexception e sharedpreferences sp acontext.getsharedpreferences preferences name,contex...