为什么在部署之前加密web.config中的敏感数据被认为是正确的做法?如果网站是在现场托管的,那么如何加密这些数据会有风险呢?
答案 0 :(得分:2)
当然,在大多数情况下,黑客很难获得对web.config文件的访问权,因为asp.net对它进行了不同的处理,并且不允许它直接读取。
然而 您需要为面向公众的Web服务器加密web.config有很多原因。
我能想到的两个原因:
1)黑客总是以某种方式设法以某种方式读取您的web.config。如果黑客设法破坏您的Web服务器,那么加密您的web.config至少会减慢速度,如果不是阻止黑客获取对您数据库的访问权。
在许多托管环境中,数据库将驻留在完全不同的物理机器上。此外,黑客倾向于发现数据库比网站更有用,因为它可能包含敏感信息,如信用卡号,地址,出生日期,密码等等。
2)如果您有多个人对您的网络服务器/服务器场进行维护并且您不希望某些人能够访问您的数据库,但您仍希望他们能够访问您到您的Web服务器,以便他们可以执行维护任务。这样,他们就不会在web.config中以纯文本形式看到数据库的登录凭据。
答案 1 :(得分:2)
我们的web.config包含连接字符串和服务器用户ID和密码等信息。
我们加密配置文件以防止此类数据。
您可以在此处获取有关enrypting的详细信息:
答案 2 :(得分:0)
我相信如果有人意外禁用ASP.Net用户可以访问.config文件。
我已经看到它发生在PHP包含。有人用apache设置搞砸了,突然所有php源代码都可见,包括连接字符串。
答案 3 :(得分:0)
风险取决于您保存在数据库中的数据的价值,以及如果数据可能受到损害或删除会发生什么。
答案 4 :(得分:0)
在“旧的”ASP时代,发现了一个漏洞,当您将:: $ DATA附加到URL时,您可以查看ASP页面的源代码。
在ASP.NET 1.0中,可以使用特制URL绕过表单身份验证。
加密web.config的敏感部分是深度防御策略的一部分。您不知道ASP.NET中未发现的问题是否会绕过它对配置文件的保护,并突然暴露该文件以供全世界查看。通过不加密,您只依靠ASP.NET来不提供配置文件,这可能会在某些时候被破坏。
作为一个额外的奖励,你可以保护自己不要做一些愚蠢的事情,比如将你的web.config备份到web.config.bak--它将不再受到保护以免下载,并且是一些安全工具在扫描网页时检查的文件名站点。