asp.net下加密Config的方法
<appSettings>
<!-- 連接字符串是否加密 -->
<add key="ConStringEncrypt" value="false"/>
<!-- 連接字符串,(可以擴(kuò)展支持不同數(shù)據(jù)庫(kù))如果是加密方式,上面一項(xiàng)要設(shè)置為true,如果是明文server=127.0.0.1;database=codematic;uid=sa;pwd=,上面設(shè)置為false -->
<add key="ConnectionString" value="Data Source=|DataDirectory|\wm.mdb;Persist Security Info=True"/>
<!--權(quán)限模塊連接字符串-->
<add key="ConnectionStringAccounts" value="Data Source=|DataDirectory|\wm.mdb;Persist Security Info=True"/>
<add key="ConnectionString2" value="Data Source=|DataDirectory|\wm.mdb;Persist Security Info=True"/>
<!--虛擬目錄名稱(chēng)(如果是站點(diǎn),則為空) -->
<add key="VirtualPath" value=""/>
<!--登錄頁(yè)地址 -->
<add key="LoginPage" value="admin/Login.aspx"/>
<!--默認(rèn)菜單是否是展開(kāi)狀態(tài)-->
<add key="MenuExpanded" value="false"/>
<!--實(shí)體對(duì)象內(nèi)容緩村的時(shí)間(分鐘)-->
<add key="ModelCache" value="30"/>
</appSettings>
在asp.net2.0中新增了對(duì)web.config中的部分?jǐn)?shù)據(jù)進(jìn)行加密的功能,可以使用RSAProtectedConfigurationProvider和DPAPIProtectedConfigurationProvider來(lái)加密,本文說(shuō)明使用RSAProtectedConfigurationProvidert和計(jì)算機(jī)級(jí)別的密鑰容器進(jìn)行加密的步驟。
1. 首先確定要進(jìn)行加密的web.config中的配置節(jié)是否可以加密
2. 創(chuàng)建RSA密鑰容器
3. 在web.config中標(biāo)識(shí)要使用的密鑰容器
4. 對(duì)web.config進(jìn)行加密
5. 授予對(duì) RSA 密鑰容器的訪(fǎng)問(wèn)權(quán)限
Step 1:首先確定要進(jìn)行加密的web.config中的配置節(jié)是否可以加密
ASP.NET 2.0支持對(duì)Web.config的部分配置節(jié)進(jìn)行加密,以下配置節(jié)中的數(shù)據(jù)是不能進(jìn)行加密的:
* <processModel>
* <runtime>
* <mscorlib>
* <startup>
* <system.runtime.remoting>
* <configProtectedData>
* <satelliteassemblies>
* <cryptographySettings>
* <cryptoNameMapping>
* <cryptoClasses>
Step2:創(chuàng)建 RSA 密鑰容器
若要?jiǎng)?chuàng)建 RSA 密鑰容器,請(qǐng)使用 ASP.NET IIS 注冊(cè)工具 (Aspnet_regiis.exe) 及 –pc 開(kāi)關(guān)。必須為密鑰容器指定一個(gè)名稱(chēng),該名稱(chēng)標(biāo)識(shí)應(yīng)用程序的 Web.config 文件的 configProtectedData 節(jié)中指定的 RsaProtectedConfigurationProvider 所使用的密鑰容器。為確??梢詫?dǎo)出新創(chuàng)建的 RSA 密鑰容器,必須包括 -exp 選項(xiàng)。
例如,下面的命令創(chuàng)建一個(gè)名為 ABeenKeys 的 RSA 密鑰容器,該容器是可導(dǎo)出的計(jì)算機(jī)級(jí)密鑰容器。
aspnet_regiis -pc "ABeenKeys"–exp
Step 3: Modify web.config to identify the key container
編輯Web.config文件以標(biāo)識(shí)要使用的密鑰容器
在web.config中加以<configProtectedData>來(lái)配置密鑰容器, 使用名為 ABeenKeys 的計(jì)算機(jī)級(jí) RSA 密鑰容器的
在<configuration>中加入xmlns屬性
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
使用名為 ABeenKeys 的計(jì)算機(jī)級(jí) RSA 密鑰容器的 saProtectedConfigurationProvider。
<configProtectedData >
<providers>
<add name="ABeenProvider"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, processorArchitecture=MSIL"
keyContainerName="ABeenKeys"/>
</providers>
</configProtectedData>
Step 4: Encrypt the <connectionStrings> section of your web.config file
加密你的web.config文件中的配置節(jié)
> aspnet_regiis -pe "connectionStrings" -app "/connectionTest"
Step 5:授予對(duì) RSA 密鑰容器的訪(fǎng)問(wèn)權(quán)限
可以通過(guò)以下代碼確定應(yīng)該給哪個(gè)用戶(hù)權(quán)限
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
默認(rèn)情況下,RSA 密鑰容器受到所在服務(wù)器上的 NTFS 訪(fǎng)問(wèn)控制列表 (ACL) 的嚴(yán)密保護(hù)。這樣能夠限制可以訪(fǎng)問(wèn)加密密鑰的人員,從而增強(qiáng)加密信息的安全性。必須首先向 ASP.NET 應(yīng)用程序的進(jìn)程標(biāo)識(shí)授予對(duì)該 RSA 密鑰容器的讀取訪(fǎng)問(wèn)權(quán)限,然后 ASP.NET 才能使用 RSA 密鑰容器。可以使用 Aspnet_regiis.exe 工具及 -pa 開(kāi)關(guān),向 ASP.NET 應(yīng)用程序的標(biāo)識(shí)授予讀取 RSA 密鑰容器的權(quán)限。例如,下面的命令向 Windows Server 2003 NETWORK SERVICE 帳戶(hù)授予對(duì)名為 ABeenKeys 的計(jì)算機(jī)級(jí) RSA 密鑰容器的讀取訪(fǎng)問(wèn)權(quán)限:
aspnet_regiis -pa "ABeenKeys" "NT AUTHORITY\NETWORK SERVICE"
注意:
如果 RSA 密鑰容器是用戶(hù)級(jí)容器,必須以其 Windows 配置文件存儲(chǔ)了密鑰的用戶(hù)的身份登錄,并且必須包括 -pku 選項(xiàng)以授予對(duì)該用戶(hù)級(jí) RSA 密鑰容器的訪(fǎng)問(wèn)權(quán)限。
若要使用計(jì)算機(jī)配置中指定的默認(rèn) RsaProtectedConfigurationProvider,必須首先向應(yīng)用程序的 Windows 標(biāo)識(shí)授予對(duì)名為 NetFrameworkConfigurationKey 的計(jì)算機(jī)密鑰容器的訪(fǎng)問(wèn)權(quán)限,該計(jì)算機(jī)密鑰容器是為該默認(rèn)提供程序指定的密鑰容器。例如,下面的命令向 NETWORK SERVICE 帳戶(hù)授予對(duì)默認(rèn) RsaProtectedConfigurationProvider 所使用的 RSA 密鑰容器的訪(fǎng)問(wèn)權(quán)限。
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
NetFrameworkConfigurationKey RSA 密鑰容器是 Aspnet_regiis.exe 工具所發(fā)出的命令的默認(rèn)密鑰容器。因此上述命令也可以按以下方式發(fā)出:
aspnet_regiis -pa "NT AUTHORITY\NETWORK SERVICE"
相關(guān)文章
asp.net MaxLengthValidator 最大長(zhǎng)度驗(yàn)證控件代碼
如果數(shù)據(jù)庫(kù)字段為varchar或char類(lèi)型,ASP.NET控件在可輸入漢字的情況下,MaxLength屬性不能保證在保存到數(shù)據(jù)庫(kù)時(shí)不發(fā)生截?cái)噱e(cuò)誤,因此寫(xiě)了一個(gè)最大長(zhǎng)度驗(yàn)證控件,還可用于多行文本框。2009-12-12C#和asp.net中鏈接數(shù)據(jù)庫(kù)中參數(shù)的幾種傳遞方法實(shí)例代碼
這篇文章介紹了C#和asp.net中鏈接數(shù)據(jù)庫(kù)中參數(shù)的幾種傳遞方法實(shí)例代碼,有需要的朋友可以參考一下2013-10-10C#中常用的分頁(yè)存儲(chǔ)過(guò)程小結(jié)
C#中常用的分頁(yè)存儲(chǔ)過(guò)程小結(jié),需要利用存儲(chǔ)過(guò)程分頁(yè)的朋友可以參考下。2010-05-05微信公眾平臺(tái)開(kāi)發(fā)之發(fā)送圖文消息.Net代碼解析
這篇文章主要為大家詳細(xì)解析了微信公眾平臺(tái)開(kāi)發(fā)之發(fā)送圖文消息.Net代碼,感興趣的小伙伴們可以參考一下2016-06-06ASP.NET Core 集成 React SPA應(yīng)用的步驟
這篇文章主要介紹了ASP.NET Core 集成 React SPA應(yīng)用的步驟,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04關(guān)于asp.net button按鈕的OnClick和OnClientClick事件
OnClick是button的服務(wù)器端事件 OnClientClick是button的客戶(hù)端事件2009-05-05詳解ASP.NET Core中配置監(jiān)聽(tīng)URLs的五種方式
這篇文章主要介紹了詳解ASP.NET Core中配置監(jiān)聽(tīng)URLs的五種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Chrome內(nèi)核下由ashx輸出的js代碼不起作用的解決方法
Chrome內(nèi)核下由ashx輸出的js代碼不起作用的解決方法,需要的朋友可以參考一下2013-03-03