Share via


使用 ASP.NET 儲存敏感資訊

更新:2007 年 11 月

通常在 ASP.NET 應用程式中,要求您使用高度敏感資訊。例如,您需要利用使用者 ID 和密碼以連接至資料庫,或者您可能要儲存客戶用於存取應用程式的使用者 ID 和密碼。如果可以使用 Secure Sockets Layer (SSL) 加密在網路上傳遞的資訊,該資訊同時儲存在伺服器和用戶端上時,也必須受到保護。本主題涵蓋一些儲存敏感資訊的一般方針。

注意事項:

如需如何儲存敏感性資訊的詳細資訊,請參閱 MSDN 網站上的改善 Web 應用程式安全性:威脅與對策 (英文)。

盡可能避免儲存敏感資訊

避免公開 (Expose) 應用程式中敏感資訊的最好方法是不儲存它。盡量減少儲存敏感資訊的位置。避免在 Cookie 或瀏覽器中保存的控制項中儲存應用程式的敏感資訊,因為這樣會將敏感資訊公開給應用程式的用戶端。避免在應用程式邏輯中儲存敏感資訊。請改為從安全組態位置或用戶端擷取敏感資訊。

加密敏感資訊

確實要儲存敏感資訊時,避免以人們可讀取的 (Human-Readable) 文字或以可輕鬆解碼的格式 (例如,base64 編碼) 儲存它。而是應該加密資訊,以便資訊公開給攻擊者時,該攻擊者也無法輕易地判斷敏感資訊所包含的內容。

如果只需要驗證敏感資訊,而不將它解碼為人們可讀取的格式,則使用單向雜湊加密敏感資訊。然後,比較從經過驗證之來源所接收到的敏感資訊時,雜湊接收到的值並比較用於驗證的雜湊。例如,如果您是在使用 ASP.NET 成員資格和表單驗證來提供應用程式的使用者驗證,請將密碼格式設為 Hashed,以便在儲存密碼於資料來源中或比較它們以用於驗證時,可使用單向雜湊進行加密。

將敏感資訊 (例如,連接字串、使用者認證或加密金鑰) 儲存至應用程式的 Web.config 檔中時,使用受保護的組態提供者加密 Web.config 檔的敏感部分。如需「受保護的組態」的詳細資訊,請參閱使用受保護的組態加密組態資訊

如需使用加密保護敏感資訊的詳細資訊,請參閱 .NET Framework 密碼編譯模型

透過使用權限保護敏感資訊

將敏感資訊儲存至檔案、資料庫、登錄或其他位置時,使用 NTFS 存取控制清單和資料庫權限,限制只有必要的來源和必要的存取才可以存取該資訊。如需詳細資訊,請參閱資料庫文件或 ASP.NET 所需的存取控制清單 (ACL)

請參閱

概念

執行階段時的 Web 應用程式安全性