Web安全解決方案

  • 什麼是 .NET Framework 安全性?html

    .NET Framework 提供了用戶和代碼安全模型,容許對用戶和代碼能夠執行的操做進行限制。要對基於角色的安全性和代碼訪問安全性進行編程,能夠從 System.Security 命名空間中使用類型。.NET Framework 還提供了System.Security.Cryptography 命名空間,公開對稱和不對稱的加密與解密、散列、隨機數生成、數字簽名支持等。正則表達式

    要理解 .NET Framework 安全性基本設置,請參閱「.NET 安全基礎」單元。數據庫

  • 如何編寫安全託管代碼編程

    用強名稱對程序集進行數字簽名,使它們不能隨意改動。同時,在結合使用強名稱的程序集和 ASP.NET 時,須要注意強名稱的問題。經過遵照堅固的面向對象設計原理,減少程序集受攻擊面,而後使用代碼訪問安全性,進一步限制哪些代碼能夠調用您的代碼。使用結構化的異常處理方法防止敏感信息蔓延到當前信任邊界以外,並開發更加可靠的代碼。避免常規問題,特別是輸入文件名和 URL 的問題。小程序

    有關如何提升託管代碼安全性的信息,請參閱「構建安全的程序集」單元。有關如何有效使用代碼訪問安全性,以進一步提升安全性的詳細信息,請參閱「代碼訪問安全實踐」單元。有關執行託管代碼複查的信息,請參閱「Security Code Review」單元。數組

  • 如何安全地處理異常安全

    不要顯示內部系統或應用程序的詳細信息,如堆棧跟蹤、SQL 語句片段等。確保這類信息不被容許蔓延到最終用戶或當前信任邊界之外。cookie

    在異常事件中安全地失敗,確保應用程序拒絕訪問,並且沒有停留在不安全的狀態下。不記錄敏感或私有數據,如密碼,以避免形成危害。在記錄或報告異常時,若是用戶的輸入包括在異常消息中,對其進行驗證或清理。例如,若是返回一個 HTML 錯誤消息,您應該對輸出進行編碼,以免腳本注入。網絡

    有關更多信息,請參閱「構建安全的程序集」和「構建安全的 ASP.NET 頁和控件」兩單元的「Exception Management」部分。工具

  • 如何執行託管代碼的安全複查

    使用分析工具(如 FxCop)分析二進制程序集,確保它們符合 .NETFramework 設計準則。修復分析工具識別出的全部安全缺陷。使用文本搜索工具掃描硬編碼機密(如密碼)的源代碼庫。以後,複查具體的應用程序元素,包括 Web 頁面和控件、數據訪問代碼、Web 服務、服務組件等。要特別注意 SQL 注入和跨站點腳本編寫缺陷。

    還要對使用敏感的代碼訪問安全技術進行復查,如連接聲明和斷言。有關更多信息,請參閱「Code Review」單元。

  • 如何保證開發人員工做站的安全性

    您可使用一套方法保證工做站的安全性。保證您的賬戶、協議、端口、服務、共享、文件與目錄和註冊表的安全。最重要的是,保持您的工做站具備當前最新的補丁與更新。若是您在 Microsoft Windows_ XP 或 Windows 2000 上運行 Internet 信息服務 (IIS),則運行 IISLockdown。IISLockdown 應用安全的 IIS 配置,並安裝 URLScan Internet 安全應用程序編程接口 (ISAPI) 篩選器,該篩選器用於檢測和拒絕潛在的惡意 HTTP 請求。例如,您可能須要修改默認 URLScan 的配置,這樣您就能夠在開發和測試期間調試 Web 應用程序。

    有關更多信息,請參閱本指南的「如何作」部分的「如何保證開發人員工做站的安全」。

  • 如何結合使用代碼訪問安全性和 ASP.NET

    使用 .NET Framework 版本 1.1,您能夠在 Machine.config 或 Web.config 中設置 ASP.NET 的信任級。這些信任級使用代碼訪問安全性,以限制 ASP.NET 應用程序能夠訪問的資源,例如文件系統、註冊表、網絡、數據庫等。此外,它們還提供了應用程序隔離。

    有關從 ASP.NET 使用代碼訪問安全性、開發部分信任的 Web 應用程序和沙箱化特權代碼的詳細信息,請參閱「在 ASP.NET 中使用代碼訪問安全」單元。

    有關代碼訪問安全性的基礎的詳細信息,請參閱「代碼訪問安全實踐」單元。

    有關在開發託管代碼時須要考慮的代碼訪問安全性問題的詳細信息,請參閱「構建安全的服務組件」、「構建安全的 Web 服務」、「構建安全的遠程組件」和「構建安全的數據訪問」等單元的「代碼訪問安全注意事項」部分。

  • 如何編寫具備最低權限的代碼

    能夠限制代碼可以執行的操做,這與運行該代碼所使用的賬戶無關。經過配置策略或如何編寫代碼,您可使用代碼訪問安全性來限制代碼容許被訪問的資源和操做。若是代碼不須要訪問某種資源或執行某種敏感操做(如調用非託管代碼),可使用聲明性安全屬性來確保代碼不會被管理員授予這種權限。

    有關更多信息,請參閱 「代碼訪問安全實踐」單元。

  • 如何限制文件 I/O

    可使用代碼訪問安全性來限制程序集訪問文件系統區域和執行 I/O 的能力。例如,能夠限制某個 Web 應用程序,使它只能在它的虛擬目錄層次結構下執行文件 I/O。您也能夠將文件 I/O 限制在特定的目錄上。這能夠經過編程或配置代碼訪問安全策略來完成。

    有關更多信息,請參閱「代碼訪問安全實踐」單元的「文件 I/O」和「在 ASP.NET 中使用代碼訪問安全」單元的「媒體信任」。有關配置代碼訪問安全策略的詳細信息,請參閱「如何使用 CAS 策略約束程序集」。

  • 如何防止 SQL 注入

    使用數據訪問的參數化存儲過程。使用參數要確保輸入值的類型和長度都獲得檢查。參數也被視做安全文本值和數據庫內的不可執行代碼。若是不能使用存儲過程,就使用帶有參數的 SQL 語句。不要經過鏈接 SQL 命令和輸入值來構建 SQL 語句。還要確保應用程序使用具備最低權限的數據庫登陸,以限制它在數據庫中的功能。

    有關 SQL 注入的詳細信息和進一步對策,請參閱「構建安全的數據訪問」單元的「SQL 注入」。

  • 如何防止跨站點腳本編寫

    對輸入類型、長度、格式和範圍進行驗證,並對輸出進行編碼。若是輸出包括輸入(包括 Web 輸入),則對輸出進行編碼。例如,對窗體字段、查詢字符串參數、cookie 等進行編碼,以及對從沒法假定其數據是安全的數據庫(特別是共享數據庫)中讀取的輸入進行編碼。對須要以 HTML 返回客戶端的自由格式輸入字段,對輸出進行編碼,而後選擇性地清除在許可元素(如用於格式化的 <b> 或 標記)上的編碼。

    有關更多信息,請參閱「構建 ASP.NET 頁和控件」單元的「跨站點腳本編寫」。

  • 如何管理機密

    最好尋找避免存儲機密的替代方法。若是必須存儲它們,則不要在源代碼或配置文件中以明文的方式存儲。使用數據保護應用程序編程接口 (DPAPI) 加密機密,以免關鍵的管理問題。

    有關更多信息,請參閱「構建安全的 ASP.NET 頁和控件」單元的「敏感數據」、「構建安全的程序集」單元的「加密」和「保證 ASP.NET 應用程序的安全」單元的「Aspnet_setreg.exe 與進程、會話和標識」。

  • 如何安全地調用非託管代碼

    特別注意傳遞給非託管 API 和非託管 API 傳遞出的參數,防止潛在的緩衝區溢出。驗證輸入和輸出字符串參數的長度,檢查數組邊界,並特別當心文件路徑的長度。在斷言非託管代碼權限以前,使用自定義權限聲明保護對非託管資源的訪問。若是用 SuppressUnmanagedCodeSecurityAttribute 提升性能,請當心使用。

    有關更多信息,請參閱「構建安全的程序集」和「代碼訪問安全實踐」兩單元中的「非託管代碼」部分。

  • 如何執行安全的輸入驗證

    對輸入進行限制、拒絕和清理,由於驗證已知有效類型、模式和範圍的數據要比經過查找已知錯誤字符來驗證數據容易得多。驗證數據的類型、長度、格式和範圍。對字符串輸入,請使用正則表達式。要使用執行類型檢查,則使用 .NET Framework 類型系統。有時候,可能須要對輸入進行清理。一個例子是對數據編碼,以保證其安全性。

    有關輸入驗證設計策略,請參閱「設計安全 Web 應用程序的指導方針」單元的「輸入驗證」。有關實現細節,請參閱「構建安全的 ASP.NET 頁和控件」、「構建安全的 Web 服務」、「構建安全的遠程組件」和「構建安全的數據訪問」單元的「輸入驗證」部分。

  • 如何保證窗體身份驗證的安全性

    劃分 Web 站點,隔離匿名用戶能夠訪問的公共可訪問頁面和須要身份驗證訪問的限制性頁面。使用安全套接字層 (SSL) 來保護窗體身份驗證憑據和窗體身份驗證 cookie。限制會話生存時間和確保身份驗證 cookie 只在 HTTPS 上傳輸。對身份驗證 cookie 加密,不要在客戶端計算機上保留它,也不要將其用於個性化目的;對個性化使用單獨的 cookie。

相關文章
相關標籤/搜索