ASP.NET環境下為網站增加IP過濾功能第1/2頁

來源:互聯網
上載者:User

1. 需求分析

通過深入的交流和溝通,確認了該發電廠在企業網站使用者存取控制方面的改進要求,大致情況如下:

a) 網站基於Asp.Net2.0實現,不允許修改來源程式

b) 廠內使用者可直接存取整個網站的所有頁面,員工不需要身分識別驗證

c) 廠外使用者只能訪問指定的頁面

顯而易見,他們就是針對企業網站增加一項IP過濾功能,在廠外使用者訪問某些敏感頁面時將其拒之門外。首先我們需要設定一個IP列表和一個Url列表,前者包含所有廠內IP,後者包含廠外使用者可訪問的全部Url,並且這兩個列表都是可維護的;另外一個核心問題是,我們需要選擇一個合理的方式將開發好的功能模組整合到企業網站中,HttpModules義不容辭。

在Asp.Net時代,IIS 接收到請求並將其調度給 aspnet_isapi.dll之後,ASP.NET 引擎開始逐個對已配置的HTTP模組(HttpModules)進行初始化,然後再調用正確的HTTP處理常式並呈現被請求的資源,最後將所產生的標記返回給 IIS 和請求用戶端(如所示)。

IIS 和 ASP.NET 正在處理請求

如果你想瞭解更多關於HttpModules的資料,請自行查閱。

2. 方案設計

2.1. 開發環境

程式設計語言:C#2.0

開發工具:Visual Studio.NET2008

作業系統:windows2003 R2

2.2. 概要設計

使用HttpModules實現IP過濾功能的核心思想是:自訂一個HttpModule捕獲每一個使用者請求,然後擷取相關的使用者IP和被請求的Url進行邏輯判斷,將未授權的請求重新導向到一個錯誤提示頁。Http請求授權與否的判斷邏輯為:

1) 判斷請求是否來自本機電腦,是則自動忽略,否則繼續;

2) 判斷使用者IP是否屬於內網(IP列表),是則忽略,否則繼續;

3) 判斷被請求Url是否授權所有使用者訪問,是則忽略,否則繼續;

4) 將請求重新導向到錯誤提示頁。

在HttpApplication的BeginRequest事件中附加自訂的處理常式即可完成Http請求的捕獲。此外,為了便於維護我們應將程式運行需要的各項參數(IP列表、Url列表、錯誤提示頁路徑等等)儲存於特定的XML設定檔中,為了提高效率,我們還需要將設定檔執行記憶體級的緩衝處理並對IP、Url匹配演算法進行適當的最佳化。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.