我在加密配置部分时遇到了一些麻烦。我们使用来自外部供应商的包,web.config按以下方式构建:
的web.config
<appSettings file="customSettings.config">
<add key="generic_setting" value="true"/>
<add key="another_generic_setting" value="false"/>
</appSettings>
customSettings.config
<appSettings>
<add key="company_db_username" value="sa"/>
<add key="company_db_password" value="secret"/>
</appSettings>
我们使用WiX创建安装包(msi),以便我们可以在我们的组织中部署它。我们执行的一个自定义操作是appSettings部分的加密。在上面描述的情况中,遗憾的是它只加密web.config文件中的部分并保持customSettings.config不变。
我注意到configSource属性的加密效果比文件属性好一些,但它不支持合并两个文件中的元素。现在我可以在我加密自定义操作中的所有内容之前以编程方式将customSettings.config的元素合并到web.config中,但我想知道是否有更清晰的解决方案。
答案 0 :(得分:1)
根据您的示例,您要加密的信息是数据库用户名和密码,另一种方法是使用Windows身份验证第一次连接到您的数据库。初始用户将拥有非常有限的权利。
使用该连接获取更高权限帐户的凭据/连接字符串,该帐户先前使用项目级别的DB加密存储(请参阅OPEN SYMMETRIC KEY和ENCRYPTBYKEY)。