在加密web.config中的连接字符串时,密钥存储在哪里?
此外,更改连接字符串凭据时是否需要重新编译?
答案 0 :(得分:2)
根据this documentation,您在加密配置时有两个提供程序:
我对DPAPI知之甚少,所以我不能说赞成或反对它。当我考虑使用web.config的加密时,我选择了RSA并定义了其他CSP来保存我的RSA加密密钥。您可以在configProtectedData元素中的machine.config中设置它。
上述页面介绍并指导您如何使用RSAProtectedConfigurationProvider加密web.config部分。使用此提供程序时,您有两个选项
该指南随后介绍了如何使用 Aspnet_Regiis.exe 工具和RSAProtectedConfigurationProvider来加密配置文件的各个部分。
回答你的第二个问题。您不需要重新编译应用程序,但您必须解密该部分(连接字符串),更改凭据并再次加密该部分。或者用新的web.config替换web.config并再次加密。
请注意,在加密某个部分时,您必须在与web.config相同的计算机上拥有加密密钥。该指南提到了如何从一台计算机导出RSA密钥并将其导入另一台计算机以便在Web场中使用。
但是考虑一下这个问题:当你的应用程序可以解密web.config时(因为它必须在使用连接字符串之前完成),那么任何人都可以这样做(如果他可以到达机器)。我知道使用密钥的权限可以设置等等但是恕我直言,在连接字符串中使用密码是错误的做法。
最后一件事。上面指南中提到的 Aspnet_Regiis.exe 工具只能加密web.config。如果您有app.config并想加密它,请查看this SO question。
答案 1 :(得分:0)
我可以回答第二个问题,但不是第一个问题。
更改连接字符串凭据时不需要重新编译,因为web.config
是动态加载的。
答案 2 :(得分:0)
您可以将它存储在任何您想要的位置,而不是存储在web.config中。
建议:
1.在不同的配置文件中
2.注册表。
3.硬编码。
我可能会选择第一个选项。