ASP.NET的web.config連接字串加密

  之前我們實作asp.net與sql server遠端連接時,有提到,我們將連接字串存放到web.config中是不安全的,為什麼?因為,雖然在Client瀏覽時是看不到web.config的內容,但是在管理、開發小組中的每一個成員都看得一清二楚。為了避免造成系統安全不必要的負擔,ASP.NET提供加密工具來加密碼web.config中的連線資訊。

  另外要提醒的是,加密的時機。因為在系統執行加密時預設的金鑰來自於執行應用程式的「電腦設備」。一旦你將此web.config部署至其他電腦設備,ASP.NET將無法對它進行解密,因為部署的電腦設備沒有私密金鑰。

  也就是說,你不要很高興撰寫完所有程式,然後很聰明,為了安全,很高興在自己本機加密web.config中的資訊,然後上傳到伺服器,然後……對,你就會看到一堆錯誤訊息。所以記住:在要提供服務的Server加密web.config資訊。

  另外,為了不必要的麻煩,執行以下命令時,請關閉VWD開發工具。
  1. 按一下「開始 --> 執行 --> cmd」
  2. 輸入「cd c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727」
  3. 如果網站根目錄是:C:\Inetpub\wwwroot,請輸入下列命令:
    「aspnet_regiis.exe -pef connectionstrings C:\Inetpub\wwwroot」
    如果我們要修改連線資訊,需要解密:
    「aspnet_regiis.exe -pdf connectionstrings C:\Inetpub\wwwroot」
  整個命令很簡單,-pef後指定要加密的標記(tag),然後指定web.config所在的路徑,-pdf同義。加密後,再打開web.config,查看連線字串標記,你就會看到一堆的亂碼。

  再重複一次,加、解密請在同一台電腦。

1 則留言:

  1. 你的資訊很棒!
    剛好公司有這樣子的需求,幫了我一個忙
    謝謝

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。