在 web.config 中硬编码密码安全吗?

Is it safe to hardcode a password in web.config?

像这样在 asp.net 项目的 web.config 中写入密码有多安全:

<mailSettings>
    <smtp from="example@web.com">
       <network host="smtp.web.com"
        port="123"
        userName="username@web.com"
        password="12345"
        enableSsl="true"/>
     </smtp>
</mailSettings>

我对互联网安全不太熟悉,所以如果这不安全,还有其他选择吗?

查看加密 web.config 部分。

https://msdn.microsoft.com/en-us/library/bb986855.aspx

类似于

"aspnet_regiis.exe -pef "system.net/mailSettings/smtp" "C:\inetpub\wwwroot\website" -prov RSAProtectedConfigurationProvider"

部署到网络场时请考虑 <machineKey> 价值。

如果您在 web.config 中设置 <machineKey>,您基本上是在泄露要解密的密钥。

所以就像大卫在上面的评论中所说的那样,如果您愿意与有权访问您的代码的人分享秘密,那就没问题了。

如果没有,请创建一个您不介意共享凭据的测试 smtp 环境,并将这些凭据放入 web.config。

或查看 Papercut 等工具进行本地测试,并更改 web.config 右侧 before/after 部署中的值。