【问题标题】:Is it bad practice to put sensitive information in a Web.config file?将敏感信息放在 Web.config 文件中是不好的做法吗?
【发布时间】:2011-09-16 12:03:14
【问题描述】:

为了使管理员能够轻松地修改用户在我的 ASP .NET MVC Web 应用程序中获得授权的组,我已将组名称作为 appSettings 放在我的 Web.config 中。

<add key="User" value="VDP ICMD Users"/>
<add key="SuperUser" value="VDP ICMD Super Users"/>
<add key="Administrator" value="VDP ICMD Administrator"/>

与实际 Active Directory 组名相关的值。然后在我的控制器中,使用我的自定义 AuthorizeAttribute 我可以简单地编写

[AuthorizeAD(GroupKeys = "User")]

我的问题是,将敏感信息(如组名)放在 Web.config 文件中可以轻松更改它们是否是不好的做法?除了登录服务器本身之外,其他人是否可以轻松访问 Web.config 文件?

【问题讨论】:

  • 如果有人可以进入您的服务器并访问您的 web.config,那么您需要担心更大的问题...
  • 组名是使用您的网站对 AD 进行正确工作身份验证的关键。如果您组织中的某个人在具有更高限制的组中,他可以通过访问 web.config 文件并简单地添加/编辑组名来提升写入/编辑权限来提升权限,例如
  • 同意@Justin Satyr。我不担心,那是系统管理员的工作。我更担心是否有人可以更改甚至查看配置文件而无需访问服务器。

标签: .net asp.net asp.net-mvc


【解决方案1】:

访问 web.config 是否容易,这取决于您的基础设施和安全策略。它不是一个可浏览的文件,所以如果有人想窃取 web.config 需要进入您的服务器。 (另一种选择是 ASP.NET 流上现有或未来的安全漏洞,它以前发生过,但我们希望这种情况不太可能发生)。

存储尽可能不敏感的信息是一种好习惯,但没有任何东西真的很难。

不过,您可以在配置文件中加密敏感信息。 Here你有一个解释如何做的演练。

【讨论】:

    【解决方案2】:

    一般来说应该是安全的,只要您不输入明文密码,即使在内部,任何有权访问部署文件夹的人都可能窃取这些密码。

    IIS 和基于它的 ASP.NET 引擎旨在防止从 Web 访问 web.config 文件,因此此类文件永远不会通过浏览器或 HTTP 连接被嗅探或窃取。

    这么说,根据经验,我会将这些信息放在数据库中的配置表中,并在 ASP.NET 代码中创建包装类,这些类封装了对此类配置值的读取,因此没有太多的逻辑来到处获取这些数据。

    数据库中配置参数的优点是至少易于部署或零部署,无需手动文件编辑即可轻松更改,自动备份并回答您的主要问题,您的数据库应该已经受到保护,防止未经授权的访问。

    【讨论】:

    • 您对我的示例的回答是,就安全性而言,可以像我一样将信息放入 Web.config 中,但是由于您提到的其他原因,您会将其放入数据库中?
    • 只要没有人能从内部接触Web服务器就可以了,因为如果他这样做了,他马上就可以成为管理员。由于数据库应该更安全,我会使用数据库。另一方面,如果有人可以触摸 web.config,那么也可以在那里禁用安全性...
    • 没错。正如@Justin Satyr 所说,如果他们能够访问服务器和我的 web.config,我就会遇到更大的问题。他们不仅可以禁用安全性,还可以将应用程序重新指向不同的数据库并更改一大堆其他内容。
    【解决方案3】:

    没有。这在给定的上下文中是不安全的。

    组名是使用您的网站针对 AD 进行正确工作身份验证的关键。在您的场景中,如果您组织中的某个人在具有更高限制的组中,他可以通过访问 web.config 文件并简单地添加/编辑组名来提升其自己的写入/编辑权限来提升权限,例如,或访问机密信息,例如薪水或合同,甚至是公司的 CEO 计划。你想要这样的麻烦吗?

    阅读MSDN文章How to encrypt Web.config

    【讨论】:

    • 但据我所知,访问 Web.config 文件的唯一方法是访问托管服务器,正如@JustinSatyr 评论的那样,如果他们能做到,我有更大的问题.
    猜你喜欢
    • 2021-09-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多