在 web.config 中加密 appSettings
我正在開發一個網路應用程序,它需要將使用者名和密碼儲存在 web.Config 中,它還引用了一些將由網路應用程序本身而不是客戶端請求的 URL。
我知道 .Net 框架不允許提供 web.config 文件,但我仍然認為將此類資訊以純文字形式保留是不好的做法。
到目前為止,我所閱讀的所有內容都要求我使用命令行開關或將值儲存在伺服器的系統資料庫中。由於主機線上並且我只有 FTP 和控制面板 (helm) 訪問權限,因此我無法訪問這些。
任何人都可以推薦我可以使用的任何好的、免費的加密 DLL 或方法嗎?我寧願不開發自己的!
感謝到目前為止的回饋,但我無法發出命令,也無法編輯系統資料庫。它必須是一個加密工具/助手,但只是想知道哪個!
- MSDN 上的加密和解密配置部分(ASP.NET)
- 在 ScottGu 的部落格上加密 ASP.NET 2.0 中的 Web.Config 值
- K. Scott Allen部落格上的加密自定義配置部分
編輯:
如果您不能使用 asp 實用程序,您可以使用SectionInformation.ProtectSection方法加密配置文件。
程式碼項目範例:
雖然乍一看似乎很簡單,但我遇到了一些障礙。
因此,我使用預設加密提供程序提供了對我來說很好的步驟(加密appSettings部分):
加密web.config 中的部分:
- 打開管理員命令外殼(以管理員身份執行!)。命令提示符將在
C:下面的步驟中假設。
進一步假設應用程序已部署在D:\Apps\myApp- 將其替換為您在步驟 3 中使用的路徑。cd "C:\Windows\Microsoft.NET\Framework64\v4.0.30319", 在 32 位 Windows 系統上使用Framework而不是Framework64cd /D "D:\Apps\myApp"
**注意:**如果驅動器與您目前的驅動器不同,該/D開關將自動更改驅動器。在這裡它將更改路徑和驅動器,因此目前目錄將在D:\Apps\myApp之後。c:aspnet_regiis -pef appConfig .您應該會看到以下消息:
Microsoft (R) ASP.NET RegIIS 4.0.30319.0 管理實用程序,用於在本地電腦上安裝和解除安裝 ASP.NET。版權所有 (C) 微軟公司。版權所有。加密配置部分…成功!
您還可以解密web.config 中的部分:這些步驟相同,但使用選項
-pefaspnet_regiis。也可以加密 web.config 的其他部分,例如,您可以通過以下方式加密連接字元串部分:
aspnet_regiis -pe "connectionStrings" -app "/SampleApplication"注意:上述加密對您的 Web 應用程序是透明的,即您的 Web 應用程序無法辨識設置已加密。
您還可以選擇使用非透明加密,例如使用 Microsoft 的 DPAPI 或使用AES以及框架的AES Class。我在 Stackoverflow描述瞭
如何使用DPAPI完成它。DPAPI 的工作方式非常相似,它使用機器或使用者憑證的密鑰。通常,非透明加密為您提供更多控制權,例如您可以添加 SALT,或者您可以使用基於使用者密碼的密鑰。如果您想了解有關如何從密碼片語生成密鑰的更多資訊,請查看此處。