轻松加密程序配置信的
民生法规 2021-08-25 04:07 字号: 大 中 小
一、 简介
当创建 2.0应用程序时,开发者通常都把敏感的配置信息存储在nfig文件中。最典型的示例就是数据库连接字符串,但是包括在nfig文件中的其它敏感信息还包括SMTP服务器连接信息和用户凭证数据,等等。尽管默认情况下可以配置以拒绝所有对扩展名为.config的文件资源的HTTP请求;但是,如果一个黑客能够存取你的web服务器的文件系统的话,那么,nfig中的敏感信息仍然能够被窃取。例如,也许你不小心允许匿名FTP存取你的站,这样以来就允许一个黑客简单地通过FTP协议下载你的nfig文件。
幸好,通过允许加密nfig文件中选择的部分,例如<connectionStrings>节,或你的应用程序使用的一些定制config节, 2.0有助于缓解这个问题。配置部分能够很容易地使用编码或aspnet_e(一个命令行程序)预以加密。一旦被加密,nfig设置即可避开\"虎视眈眈\"的眼睛。而且,当以编程方式从你的页面中检索加密的配置设置时,会自动地解密它读取的加密部分。简言之,一旦配置信息被加密,你就不需要在你的应用程序中编写任何其它代码或采取任何进一步的行为来使用该加密数据。
在本文中,我们将讨论如何以编程方式加密和解密该配置设置部分,并且分析一下命令行程序aspnet_e的使用。然后,我们将评估 2.0提供的加密选项。另外,还会简短地讨论一下如何加密版本1.x中的配置信息。
二、 前提
在我们开始探讨如何加密 2.0配置信息之前,请记住下列几点:
1. 所有形式的加密都会包含某种秘密,而当加密和解密数据时都要使用这一秘密。对称加密算法在加密和解密一个消息时使用同一把密钥,而非对称加密算法对于加密和解密却使用不同的密钥。无论使用哪种技术,最重要的还是看解密密钥的安全保存程度。
2. 2.0提供的配置加密技术的设计目的在于,力图阻止能够以某种方式检索你的配置文件的黑客的入侵。其实现思想是,如果在黑客的计算机上有你的nfig文件;那么,他不能破解该加密的部分。然而,当web服务器上的一个页面从一个加密的配置文件请求信息时,该数据必须被解密才能使用(并且这时不需要你编写任何代码)。因此,如果一个黑客能够把一个能够查询配置文件并显示它的结果的 web页面上传到你的系统,那么,他就能够以普通文本方式观看被加密的设置。(详细情况请参考本文提供的示例页面,它展示了加密和解密nfig文件中各部分的方法;如你所见,一个页面能够存取(并显示)该加密数据的普通文本形式)
3. 加密和解密配置信息需要付出一定的性能代价。因此,通常是仅加密包含敏感信息的配置部分。比如说,可能不需要加密<compilation>或<authorization>配置部分。
三、 加密何种信息
在我们分析如何加密 2.0配置信息前,让我们首先来看一下能够加密什么配置信息。使用.NET框架2.0提供的库,开发人员能够加密在nfig或nfig文件中的绝大多数的配置部分。这些配置部分是一些作为<configuration>或<b>元素子结点的XML元素。例如,下面的示例nfig文件中含有三个配置设置,显式地定义为:
<connectionStrings>,<compilation>和<authentication>。
<?xml version=\"1.0\"?>
<configuration xmlns=\"\">
<connectionStrings>
<add name=\"MembershipConnectionString\" connectionString=\"connectionString\"/>
局部地区能见度不到200米以下雾霾笼罩。当地气象部门发布了大雾黄色预警信号。除了气象原因外 </connectionStrings>
<b>
<compilation debug=\"true\"/>
<authentication mode=\"Forms\" />
</b>
这些节中的每一个都可以有选择地被加密,或者通过编程方式或通过aspnet_e(一个命令行工具)实现。当被加密时,加密后的文本直接存储在配置文件中。例如,如果我们要加密上面的<connectionStrings>节,那么结果nfig文件可能看起来如下所示:(注意:篇幅所限,我们省略了一大块<CipherValue>)
<?xml version=\"1.0\"?>
<configuration xmlns=\"\">
<connectionStrings configProtectionProvider=\"DataProtectionConfigurationProvider\">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAed...GicAlQ==</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
<b>
<compilation debug=\"true\"/>
<authentication mode=\"Forms\" />
</b>
另外,存在一些你不能使用这个技术加密的配置部分:
· <processModel>
· <runtime>
· <mscorlib>
· <startup>
· <moting>
· <configProtectedData>
· <satelliteassemblies>
· <cryptographySettings>
· <cryptoNameMapping>
· <cryptoClasses>
为了加密这些配置部分,你必须加密这些值并把它存储在注册表中。存在一个aspnet_e命令行工具可以帮助你实现这一过程;我们将在本文后面讨论这个工具。
【提示】nfig和nfig之区别:
nfig文件指定针对一个特定的web应用程序的配置设置,并且位于应用程序的根目录下;而nfig文件指定所有的位于该web服务器上的站点的配置设置,并且位于$WINDOWSDIR$\\\\Framework\\Version\\CONFIG目录下。
济南治疗阳痿费用重庆卵巢炎治疗哪家好
输卵管堵塞输卵管堵塞治疗费用
-
-
世锦赛花游集体技术预赛中国第二俄罗斯高居
世锦赛花游集体技术预赛中国第二 俄罗斯高居第一中国队北京...
2020-08-14 | 民生法规
-
-
海南18市县签署耕地保护责任书坚守耕地红
海南18市县签署耕地保护责任书 坚守耕地红线为有效落实耕地...
2020-08-06 | 民生法规
-
-
再战世锦赛朱婷自评有三处不同我有很好的队搭配
再战世锦赛朱婷自评有三处不同:我有很好的队友4年前朱婷还...
2020-06-05 | 民生法规
-
-
第三方报告海南国际旅游岛建设总体顺利收效搭配
第三方报告:海南国际旅游岛建设总体顺利收效明显3月26日,...
2020-06-01 | 民生法规
-
-
郎导我要女排这场胜利朱婷赢球就不累搭配
郎导:我要女排这场胜利! 朱婷:赢球就不累!女排在南京主...
2020-05-29 | 民生法规
-
-
平湖市五抓手做好清明期间烈士陵园祭扫工作
平湖市“五抓手”做好清明期间烈士陵园祭扫工作为认真做好...
2019-07-15 | 民生法规