gpt4 book ai didi

c# - 加密并部署 app.config

转载 作者:IT王子 更新时间:2023-10-29 04:39:27 24 4
gpt4 key购买 nike

我阅读并测试了很多,以找到加密和部署 app.config 到不同机器的最佳实践。一般来说,我想从第三方保护连接字符串的内容并将应用程序部署到不同的机器。我将手动配置每台机器。

我知道有几种方法,比如:

  • Aspnet_Regiis(RSAProtectedConfigurationProvider,DPAPIProtectedConfigurationProvider) 绑定(bind)到机器、用户或自定义。RSA 加密 key 。

  • System.Security.Cryptography.ProtectedData 绑定(bind)到机器或用户。

  • 在第一次执行时加密 app.config。这是不安全的。

对于加密 app.config 并通过设置或复制粘贴将应用程序提供给不同的机器,您有什么建议或最佳做法是什么?

最佳答案

第 1 步创建 RSA key 对

aspnet_regiis -pc yourkey -exp

第 2 步 导出您键入的 XML 文件

aspnet_regiis -px yourkey keyfile.xml -pri

对于每台机器

Step3导入容器

aspnet_regiis -pi yourkey keyfile.xml (see step 2)

对于每台机器

Step4 编辑 machine.config(规范路径 C:\Windows\Microsoft.NET\Framework[64|32]\v[Version]\Config)

configProtectedData 部分添加以下元素并设置 defaultProvider="YourProvider"

<add name="YourProvider"
type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
description="Uses RsaCryptoServiceProvider to encrypt and decrypt for my infrastucture"

keyContainerName="yourkey"

cspProviderName=""
useMachineContainer="true"
useOAEP="false" />

然后你可以在一台机器上加密然后粘贴到其他机器上,记住一定要给用户权限

aspnet_regiis -pa yourkey [DOMAIN\USER]

administrators 组已被授权。

了解更多信息 http://msdn.microsoft.com/en-us/library/yxw286t2(v=vs.90).aspx

当然,您可以将这些步骤放入 powershell/批处理文件中

另一种通过代码加密 connectionStrings 部分的方法是

 var connectionStrings = ConfigurationManager.GetSection("connectionStrings") 
if(!section.SectionInformation.IsProtected)
connectionStrings.SectionInformation.ProtectSection("YourProvider");

在连接和客户端/服务器场景中,我向您推荐一个我在广泛网络中采用的解决方案,即不在 app.config 中分发连接字符串,而是在可以是 Web 服务的服务中要求连接信息,或者用户身份验证后的 RESTful 服务。

这样多了少了

  1. 验证用户
  2. 在服务中需要连接信息,用户名作为参数(HTTPS 协议(protocol))
  3. 服务返回连接字符串
  4. 在 DB 连接的应用程序

使用此解决方案,如果您有区域服务器或更多服务器,您可以选择用户连接的服务器

希望对你有帮助

关于c# - 加密并部署 app.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26294226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com