中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

C#中NET環(huán)境下WebConfig如何加密-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“C#中NET環(huán)境下WebConfig如何加密”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習一下“C#中NET環(huán)境下WebConfig如何加密”這篇文章吧。

成都創(chuàng)新互聯(lián)公司服務(wù)項目包括龍鳳網(wǎng)站建設(shè)、龍鳳網(wǎng)站制作、龍鳳網(wǎng)頁制作以及龍鳳網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,龍鳳網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到龍鳳省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

在將ASP.NET項目部署到服務(wù)器上時,內(nèi)網(wǎng)環(huán)境下Web.Config往往是直接復(fù)制過去。對于外網(wǎng)環(huán)境,則需要對Web.Config文件進行加密。

.NET環(huán)境下一共提供了2種方式的加密功能,分別是DpapiProtectedConfigurationProvider和RsaProtectedConfigurationProvider提供程序。

前者在本機加密Web.Config后,只能在本機進行解密,如果需要將Config文件復(fù)制到外部主機,則無法進行解密。后者在本機加密Config文件后,可以到處密鑰容器,當把Config文件復(fù)制到外部主機后,可對先前導(dǎo)出的文件進行導(dǎo)入功能,導(dǎo)入后既可自動解密。

由于經(jīng)常需要復(fù)制Config文件到外部主機,因此Rsa保護程序更加適用于實際業(yè)務(wù)場景,本文將詳細介紹RsaProtectedConfigurationProvider程序的使用步驟。

1. 使用RsaProvider提供程序,需要首先進入.NET Framework運行環(huán)境,可以配置環(huán)境變量或使用cd指令。

cd  C:\Windows\Microsoft.NET\Framework\v2.0.50727

2. 接著便可以使用aspnet_regiis.exe創(chuàng)建一個Rsa密鑰容器。密鑰容器分用戶級別和計算機級別兩種情況,由于使用用戶級別密鑰沒什么益處,一般使用計算機級別既可。

aspnet_regiis -pc "MyKeys" -exp

3. 創(chuàng)建密鑰容器后,還需要設(shè)置密鑰容器的訪問權(quán)限,下面的命令授予NETWORK SERVICE 帳戶對計算機級別的 “MyKeys” RSA 密鑰容器的訪問權(quán)限。msdn上有一個aspx程序會展示你的asp.net程序的用戶標志,不過本人實際執(zhí)行pa指令后會報錯。

aspnet_regiis -pa "MyKeys" "NT AUTHORITY\NETWORK SERVICE"

4. 在Web.Config文件中加上如下配置節(jié)點,MyProvider為你的保護程序名稱,可隨意指定。keyContainerName為前面設(shè)置的密鑰容器名稱,useMachineContainer為true表示使用計算機級別密鑰,為false表示使用使用用戶級密鑰。

這段配置節(jié)不要像msdn那樣直接放在configure配置節(jié)點下面,這樣會報錯,建議放在你需要加密節(jié)點的后面。

   <configProtectedData>
      <providers>
         <add name="MyProvider"
              type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,
                    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
                    processorArchitecture=MSIL"
              keyContainerName="MyKeys" 
              useMachineContainer="true" />
      </providers>
   </configProtectedData>

 5 .下面的指令將對指定路徑下的config文件節(jié)點進行加密,如果配置文件中還有session的sql連接字符串,也可以對sessionState節(jié)點進行加密。

aspnet_regiis -pef "connectionStrings"  "D:\WebApp"  -prov  "MyProvider"

aspnet_regiis -pef "system.web/sessionState"  "D:\WebApp"  -prov  "MyProvider"

 加密后的connectionStrings節(jié)點如下所示,此時仍可訪問ASP.NET應(yīng)用程序。

  <connectionStrings configProtectionProvider="MyProvider">
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
      xmlns="http://www.w3.org/2001/04/xmlenc#">
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <KeyName>Rsa Key</KeyName>
          </KeyInfo>
          <CipherData>
            <CipherValue>X3XoBfbo/h9QUeVUV8A1EGMM0NQuBnhfuC/iV1e7CCmGaiRt9ogmICenTK8VAmGfhufPzWFu5UUHSiO/6BIvYPEO5WoWlj3h6/sUQmRj6NsAJOnrnYHEjta4oQb4XajxazWcf3HUeWR0mG4wDCiUfTZaRIRmXkGgfbxewpsKJ5k=</CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>suqFgGjGFaon62YNI2VM5SQymcf4yyAku9fWQuvgClj1bfqixK9kIs9IE0I0m2u4gLbF+y0xPharfcOFJpXHDwHoaCrNQsxsutqiXquX67bYcJeYaMz5ja9ebqAtQvKIiZ/kHGvFIPXSCg5HiW/GGQwaf3FESVEsOaSAJZ3JJk9MlkkwDd6LepgtcCVjLnEK0lOeEFznrngizFFZWAsYjh6UCF5lNxNxf/IBwtznsfiFi2tV1F4sx9HkJEEryf5MEtu1RAA/wqarMvn7dlXhpGconpNPXA1IGlTmaZ/S1bR/FsO39skgHrs+OHsDMbJrI5ZO4TXXbK/DD86GPzu9JXrVKNVImzzW0V8aMc2HcVNClPsMwwgGaH6PNhE0xkjV6YH77XcLdVsKibvnwMlO/4kjGKoNXaSkFBoAEgprzi8=</CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>

 如果需要解密,可以執(zhí)行下面這條指令aspnet_regiis -pdf "connectionStrings" "D:\WebApp"

<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-WebApp-20170622060005.mdf;Initial Catalog=aspnet-WebApp-20170622060005;Integrated Security=True"providerName="System.Data.SqlClient" />
</connectionStrings>

6. 導(dǎo)出密鑰容器,密鑰信息將被存儲在導(dǎo)出的xml文件中,pri表示將公鑰和私鑰一起導(dǎo)出。

aspnet_regiis  -px "MyKeys" "D:/MyKeys.xml"  -pri

7.  有了這個xml文件,就相當于有了密鑰容器,導(dǎo)出密鑰容器后可以對密鑰容器進行刪除,刪除指令如下。

aspnet_regiis  -pz  "MyKeys"

8. 刪除密鑰容器后,如果前面你沒有對Config文件進行解密,那么運行ASP.NET程序?qū)苯訄箦e。

  在本人實際操作中發(fā)現(xiàn),如果對正在運行的ASP.NET應(yīng)用程序的Web.Config文件進行加密,加密后立即刪除密鑰,此時點擊運行(不調(diào)試)仍可正常訪問。這表明Rsa解密操作在內(nèi)存中執(zhí)行,只有重新生成解決方案或調(diào)試(會執(zhí)行生成操作)后,訪問才會報錯。

9. 現(xiàn)在可以將加密后的config文件和導(dǎo)出的MyKeys.xml一起復(fù)制到服務(wù)器上,此時運行網(wǎng)站將會直接報錯,需執(zhí)行下面的導(dǎo)入指令。

aspnet_regiis -pi "MyKeys"  "D:/MyKeys.xml"

導(dǎo)入后,在本機訪問ASP.NET網(wǎng)站會發(fā)現(xiàn)仍然報錯,提示無法open  Provider。這個坑最終在網(wǎng)上找到解決方法,如下面指令所示,需要為應(yīng)用程序池設(shè)置對密鑰容器的訪問權(quán)限。

aspnet_regiis -pa "MyKeys"  "IIS APPPOOL\MyWeb" -full

自此整個流程已結(jié)束,可以將上面這些指令封裝成2個批處理程序,一個是密鑰制作bat,一個是導(dǎo)入bat,如下所示。

@echo on
cd C:\Windows\Microsoft.NET\Framework\v2.0.50727::設(shè)置config地址,config文件要在E:\test下面
set configAddress="E:\test"::創(chuàng)建RSA密鑰容器
aspnet_regiis -pc  "MyKeys" -exp

::設(shè)置密鑰容器訪問權(quán)限
aspnet_regiis -pa "MyKeys" "NT AUTHORITY\NETWORK SERVICE"::加密
aspnet_regiis -pef "connectionStrings"  "D:\WebApp"  -prov   "MyProvider"aspnet_regiis -pef "system.web/sessionState"  "D:\WebApp"  -prov   "MyProvider"::導(dǎo)出
aspnet_regiis  -px "MyKeys" "D:/MyKeys.xml"  -pri

::刪除密鑰容器
aspnet_regiis  -pz  "MyKeys" pause
@echo on
cd C:\Windows\Microsoft.NET\Framework\v2.0.50727::刪除舊的密鑰容器
aspnet_regiis  -pz  "MyKeys" ::導(dǎo)入新的密鑰容器
aspnet_regiis -pi "MyKeys"  "D:/MyKeys.xml"::設(shè)置應(yīng)用程序池的訪問權(quán)限
aspnet_regiis -pa "MyKeys"   "IIS APPPOOL\MyWeb" -full

pause

在寫完這2個bat后,我想起前面的解密指令aspnet_regiis -pdf "connectionStrings" "D:\WebApp",它只需要提供節(jié)點名稱和路徑。也就是說,如果***者能夠在被***的服務(wù)器上執(zhí)行cmd指令,那么他就可以對config進行解密。這個問題如有前輩有更好的解決方式,歡迎您指導(dǎo)留言。

如果當初微軟編寫這個指令解析方法時,加上一個key的參數(shù)。那么即使***者能夠執(zhí)行cmd指令,由于不知道key的名稱,所以仍然無法對config進行解密。

以上是“C#中NET環(huán)境下WebConfig如何加密”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文名稱:C#中NET環(huán)境下WebConfig如何加密-創(chuàng)新互聯(lián)
分享URL:http://www.rwnh.cn/article6/dcidog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、企業(yè)建站、網(wǎng)站策劃App開發(fā)、云服務(wù)器、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
麻城市| 宁阳县| 万山特区| 三亚市| 道真| 阿拉善右旗| 宜黄县| 蒲城县| 西安市| 长沙市| 普安县| 万安县| 惠安县| 滦平县| 柘城县| 盐边县| 阿巴嘎旗| 任丘市| 山西省| 阿瓦提县| 紫阳县| 白河县| 房产| 明水县| 搜索| 大石桥市| 雷州市| 厦门市| 马龙县| 新民市| 旌德县| 宁城县| 上林县| 旌德县| 工布江达县| 同心县| 柯坪县| 皋兰县| 中宁县| 年辖:市辖区| 巢湖市|