免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

如何構(gòu)建安全的.net web應用系統(tǒng)

 昵稱19943 2007-02-12

如何構(gòu)建安全的.net web應用系統(tǒng)

 構(gòu)建一個安全的系統(tǒng),這是一個非常龐大的工程。它包括設置網(wǎng)絡安全,設置操作系統(tǒng)安全以及應用程序本身的安全性。本文介紹的是有關應用.Net技術如何構(gòu)建一個安全的Web應用系統(tǒng)。

一 安全涉及的服務

構(gòu)建一個Web應用系統(tǒng),肯定要涉及到客戶端,iis以及數(shù)據(jù)庫等各個組建。下面這幅圖[該圖來源:http://msdn2.microsoft.com/en-us/library/aa302415.aspx]很好地反映了web應用程序的整個風貌,左邊表示web應用程序設計的組件或服務,右邊表示各個組件或服務可以考慮使用的安全方案。
比如在IIS這個環(huán)節(jié)上,我們可以使用匿名訪問或設置其它的驗證控制方式,可以設置IP地址和域名限制,也可以設置安全案通訊服務器證書。最新版本的IIS都較上一個IIS版本更好的安全改進。最新的IIS7新增安全性可以閱讀http://blogs./bhill/archive/2006/08/16/Security-features-in-IIS-7.aspx



二 IIS的設置

如何設置IIS,在最大程度上確保IIS安全呢?
1. 給IIS打好補丁。 每隔一段時間,微軟都會發(fā)布一些安全更新的補丁,必須及時給您的系統(tǒng)打上這些更新補丁。
2. 更改vs 2005自動生成的web項目的文件存放位置。建立web項目時,vs 2005會自動在C:\Inetpub\wwwroot下創(chuàng)建項目目錄,更改這個自動生成的目錄,將他放在其他盤下的某個位置,將會增加入侵者找到文檔目錄的難度。
3. 如采用匿名訪問,給匿名用戶盡量少的系統(tǒng)權(quán)限。
4. 如有必要,給站點設置IP地址限制。
5. 禁用目錄瀏覽項目,阻止惡意用戶導航到帶有危險工具的目錄。
   [站點]->[屬性]->[主目錄]->[目錄瀏覽]
6. 禁用父路徑瀏覽,以防惡意用戶使用MapPath方法瀏覽父目錄。
   [站點]->[屬性]->[主目錄]->[應用程序配置]->[啟用父路徑]
7. 刪除不必要的IIS虛擬目錄


三 Web程序的設置

1. 設置服務器的驗證方式
.net 提供了我們?nèi)N驗證的方式,分別為Windows身份驗證,窗體身份驗證和.net Passport身份驗證。對于這三種驗證方式,msdn中的 http://msdn2.microsoft.com/en-us/library/aa302388.aspx 一文已對此作了非常詳細的介紹。

2. 加密連接數(shù)據(jù)庫字符串
  不少朋友喜歡將連接數(shù)據(jù)庫字符串直接放在web.config中的<connectionStrings>節(jié)點下,如同<add name="SQLConnString" connectionString="Data Source=... User Id=...;Password=....;Initial Catalog=...;" providerName="System.Data.SqlClient"/>其實這樣做非常不安全,萬一web.config這個文件被非法用戶獲取,那么數(shù)據(jù)庫服務器上的數(shù)據(jù)庫及用戶名密碼信息就會被一覽無余,這等于給了非法用戶一個防盜門的鑰匙。有兩中較好的方法加密方法:

方法1:
msdn中有兩篇很好的文章分別敘述了如何使用DPAPI和RSA分別給它加密。
Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI: http://msdn2.microsoft.com/en-us/library/ms998280.aspx
Encrypt Configuration Sections in ASP.NET 2.0 Using RSA: http://msdn2.microsoft.com/en-us/library/ms998283.aspx

方法2:
在windows注冊表中新建鍵值,將SQLConnString加密后的信息存放在該鍵值上,然后設置某部分用戶才有權(quán)限去讀取注冊表中的鍵值,這不失為一種更為安全的方法。

3.  預防跨站點攻擊

何為跨站點攻擊?跨站點攻擊是惡意教本通過其他站點通過腳本的形式注入系統(tǒng)。
如 view.aspx?stuname=sam 寫成view.aspx?stuname=<script>alert(‘you are attacked!‘)</script>
這就是一個典型的跨站點攻擊。

預防的措施有:

1. 限制輸入格式,輸入類型,輸入長度以及輸入字符
 如果你使用asp.net的web控件,可以使用asp.net提供的服務器端驗證控件加以驗證。如果使用html server端控件,那就需要使用System.Text.RegularExpressons.Regex在服務器端加以驗證。
注意,不要僅僅在客戶端使用js代碼加以驗證。因為客戶端的js腳本可以輕松地通過禁用教本語言將它忽略。我對客戶端的js腳本的理解是,他僅僅幫助改善用戶體驗。

2. 格式化輸出。將輸入的內(nèi)容通過HttpUtility.HtmlEncode處理,這樣就不能直接看出輸出的內(nèi)容。

3.  要注意使用一些有潛在危險的html標簽,這些標簽很容易嵌入一些惡意網(wǎng)頁代碼。如<img> <iframe><script><frameset><embed><object>< style>等。

4. 預防SQL注入式攻擊

何為SQL注入式攻擊? 利用SQL語法規(guī)則,構(gòu)建出惡意攻擊語句入侵數(shù)據(jù)庫系統(tǒng)。
比如,用戶輸入了 a‘; drop database ***
將原本的select * from user where username = ‘a(chǎn)‘ 構(gòu)建成了select * from user where username = ‘a(chǎn)‘;drop database *** . 類似這種惡意的攻擊后果非常嚴重,這句話就足以將您的數(shù)據(jù)庫刪除?。?br>

預防的措施有:

1. 限制輸入格式,輸入類型,輸入長度以及輸入字符
2. 使用帶參數(shù)的動態(tài)SQL語句,或者使用代參數(shù)的存儲過程。這樣程序中代替參數(shù)的內(nèi)容將不被視為可執(zhí)行的 代碼,僅僅是表示一段文本。
3. 限制數(shù)據(jù)庫帳戶的權(quán)限,堅持帳戶最小權(quán)限原則。
4. 如有必要,不給程序中連接數(shù)據(jù)庫的帳戶操作數(shù)據(jù)庫表的權(quán)限。通過建立存儲過程,給帳戶操作存儲過程的權(quán)限,通過存儲過程實現(xiàn)數(shù)據(jù)庫表的增刪查改。


四. 數(shù)據(jù)庫安全設置

對數(shù)據(jù)庫的安全設置內(nèi)容也非常博大精深,很多公司也有專門的數(shù)據(jù)庫管理員負責數(shù)據(jù)庫的安全??紤]以下幾項內(nèi)容,對數(shù)據(jù)庫的安全一定也有幫助。
1. 及時安裝數(shù)據(jù)庫補丁
2. 給帳戶設置盡量少的權(quán)限。
3. 給sa帳戶設置復雜的密碼。該密碼要包含數(shù)字,字母及如?。#サ确亲帜缸址?,長度要>=8.
4. 按必要刪除一些不用的服務,比如終端服務等等。

如何構(gòu)建安全的.net web應用系統(tǒng)是在是博大精深,當然在不同情形下,對應用程序的安全有不同級別的要求,每個開發(fā)人員也應從實際出發(fā),構(gòu)建符合實際需要的安全的系統(tǒng)。以上是我在實踐中積累的一點經(jīng)驗,寫出來供大家參考,不當之處,歡迎大家討論。

如有興趣,更多更精深的內(nèi)容也可以閱讀http://msdn2.microsoft.com/en-us/library/aa302415.aspx

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多