2016年3月7日 星期一

[Visual Studio安全性]Visual Studio webconfig 組態檔加解密

簡介
當系統開發人員好不容易將程式碼撰寫完成且正式上架後,在面臨網站的環境中,一定會遭受到網路上惡意的攻擊,其中最主要的目的就是找出網站平台中,資料庫的連線內容,而前端的平台與後端的資料庫在連線的過程中,往往是透過前端的設定(webconfig)後,存取後端的資料庫。

此時,若網站被找出弱點後,webconfig的連線字串都被揭露在駭客的手中,還有什麼自保的方式呢?除了發現後立刻更改後端資料庫的密碼,以防被2次入侵(不過該方式是治標不治本的駝鳥心態,或許資料庫內的個資已被洩露出去了)。

那還有什麼方式是能提高網站安全性的呢? 就是在開發的環境中,加入資安的概念,保護好開發環境的連線內容,在數據傳輸的過程中進行加密,就算連線方式被駭客所竊取,也難以被利用。

webconfig 組態檔加解密教學操作方式

★注意:加解密必須在同一台機器上,否則會無法正常執行

加密 (Encryption)

1.將專案資料夾複製到預定的Server上

2.確定專案使用的Framework版本(本範例使用的是4.0)

3.開啟Command Mode,將路徑切換到C:\Windows\Microsoft.NET\Framework\(Frmework版本)下


4.執行以下指令進行加密:
aspnet_regiis.exe -pef "connectionStrings" "D:\WWWRoot\GoogleMap" -prov "DataProtectionConfigurationProvider"
其中:
"connectionStrings":針對組態檔內的connectionStrings標籤內的資料加密
"D:\WWWRoot\GoogleMap":專案的實體路徑

5.加密完成
開啟webconfig的設定檔案,可看出連線至後端資料庫的字串內容已被加密,多了層安全性。


解密(Decryption)

1.確定專案於Server上的路徑

2.確定專案使用的Framework版本(本範例使用的是4.0)

3.開啟Command Mode,將路徑切換到C:\Windows\Microsoft.NET\Framework\(Frmework版本)下

4.執行以下指令進行解密:
aspnet_regiis.exe -pdf "connectionStrings" "D:\WWWRoot\GoogleMap"
其中:
"connectionStrings":針對組態檔內的connectionStrings標籤內的資料解密
"D:\WWWRoot\GoogleMap":專案的實體路徑

5.解密完成
        至webconfig檔案內,開啟原先的設定內容,即可看到原先被加密的字串已被還原回來,此時可以再做更動修改後,別忘了再把檔案加密完成。

參考資料: