簡體   English   中英

使用Entity Framework時,如何將數據庫用戶名和密碼安全地存儲在web.config文件中

[英]How can a database username and password be stored securely in a web.config file when using Entity Framework

使用Entity Framework訪問非本地服務器上的數據庫時,如何在連接字符串中指定用戶名和密碼參數(存儲在web.config文件中)?

我已經閱讀了C#分步指南(John Sharp 2010版),因為潛在的逆向工程或有人掌握了源代碼,所以從不硬編碼到您的應用程序中。 所以我想知道這樣做的傳統最佳實踐。

硬編碼用戶和密碼有三個原因:

  • 它給你一個安全的錯誤印象,因為當你用文本編輯器查看二進制文件時你什么都不懂,但實際上拆卸.NET程序集是件小事
  • 它迫使所有軟件開發人員知道用戶和密碼
  • 這意味着更改用戶/密碼對需要新的部署,其中還包括重新編譯應用程序

這個問題沒有神奇的解決方案,在這種情況下,安全性只能與負責安全的人員的紀律和善意一樣好。

在我的公司,它是這樣的:

  • 軟件開發人員無權訪問生產數據庫,而且他們肯定不知道用戶和密碼
  • 軟件管理員擁有用戶名和密碼,當他們在生產機器上部署應用程序時,他們將開發部門提交的web.config與他們自己的秘密合並
  • 沒有其他人可以從軟件管理員訪問生產機器appart

加密web.config的用戶和密碼只會對你有所幫助。 最終,您必須在應用程序中以清晰的形式對加密密鑰進行硬編碼,這會將我們帶回到反匯編問題中。

在我看來,一個非常好的解決方案是將我公司發生的事情和加密與明確的密鑰和混淆相結合。

一般的想法是:

  • 拿我說的關於應用程序管理員的人
  • 修改一個小細節:他們不知道明確的用戶名和密碼,他們知道加密的表格
  • 只有開發人員有密鑰才能解密加密的用戶名和密碼,並且他們在運行時使用它
  • 開發人員應該對他們的程序集進行模糊處理,以便任何人都不值得嘗試對二進制文件進行逆向工程,找出明確的密鑰,以某種方式向應用程序管理員詢問加密的用戶名和密碼是什么(在工作場所中喝酒時)然后把所有東西放在一起

這意味着某人(可能是公司的所有者或其他負責人)需要使用“greasemonkey”應用程序來加密用戶名和密碼,並將結果加密給應用程序管理員。

不要忘記還有數據庫管理員最初給所有者一個初始的憑證對。 所有者需要更改密碼,然后完成我布置的所有內容。

總之,有許多解決方案,有些比其他解決方案更狡猾。 它不僅僅在工具和代碼中,而且在學科中。

您可以加密web.config的各個部分。 請參閱MSDN上的演練: http//msdn.microsoft.com/library/dtkwfdky.aspx這很容易理解。

您可以嘗試使用以下代碼,

ConnectionStringsSection oSection = Configuration.ServiceConfiguration.GetConnectionStrings();
    if(!oSection.SectionInformation.IsLocked && !oSection.SectionInformation.IsProtected)
    {
        oSection.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider"); 
        oSection.CurrentConfiguration.Save();
    }

編輯:

您可以從MSDN Link獲取有關受保護配置的更多信息, http://msdn.microsoft.com/en-us/library/53tyfkaw.aspx

您可以使用本文檔中顯示的方法輕松加密web.config文件的特定部分: 加密和解密配置部分

它對您的應用程序代碼是透明的,並且加密的部分在加密的機器外部是無用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM