【问题标题】:How should I protect sensitive passwords in my c# web apps/services?我应该如何保护我的 c# web 应用程序/服务中的敏感密码?
【发布时间】:2013-04-23 18:35:51
【问题描述】:

我正在编写一项服务,允许我公司域中的用户执行有限的活动目录操作。这些用户自己没有 AD 权限,但网站作为共享用户进行身份验证,可以执行解锁帐户等操作(例如)。

我的代码中的密码目前是明文形式

有没有推荐的方法让我保护这个密码?显然,有人必须反编译网站二进制文件才能访问它,但我觉得这还不够。

对于背景,我使用 C# 中较新的 System.DirectoryServices.AccountManagement 方法来执行此操作,所以我有:

PrincipalContext pc = new PrincipalContext(ContextType.Domain, "MYDOMAIN", "theuser", "thepassword");

感谢任何提示!否则我可能只是求助于混淆,加密它并使用几个类似 badger-warren 的类来解密值

【问题讨论】:

  • 因为它是 ASP.NET 代码,您可以假设您的用户无权访问您的应用程序的 .DLL。只有少数服务器管理员会这样做。您是否假设其中之一是恶意的并且不被信任?如果是这样,很可能你被搞砸了,而且你无法保护自己免受他们的伤害。

标签: c# asp.net asp.net-mvc security windows-services


【解决方案1】:

我认为最好的方法是让应用程序池标识拥有足够的权限来在 Active Directory 中执行必要的工作。这将允许 Web 应用程序在不需要硬编码的用户名和密码的情况下运行。您可能需要系统管理员的帮助才能进行此设置。

请记住,混淆只能如此有效。混淆代码必须在执行之前进行去混淆处理,以便处理器能够理解它。如果有人下定决心,这可以被打败。但如果发生这种情况,您可能会遇到更多安全问题。

最后,与您连接到 Active Directory 的用户应该拥有尽可能少的访问权限,以减轻在发现用户名和密码时可能造成的任何损害。

【讨论】:

  • 没错。保护敏感信息的最佳方法是不使用它。让内置的安全基础设施处理这些事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2021-05-17
  • 2021-05-12
  • 1970-01-01
  • 2012-03-29
  • 2014-02-13
  • 2017-12-22
相关资源
最近更新 更多