以任何方式将密码安全地存储在应用程序中

时间:2014-05-21 21:22:41

标签: .net security password-storage

我非常有信心答案就是这样,但我想覆盖我的所有基础。

在.net的上下文中,有没有办法编写应用程序,而不是Web应用程序或服务,而是一个应用程序,以便它可以访问服务而无需最终用户直接访问同一服务?< / p>

或者,更具体地说,是否有任何方法可以存储密码,某个表单的凭据在应用程序内或应用程序和文件中(用户也可以访问),我可以自信地说明用户无法使用提取凭据并获得对该服务的访问权限吗?

我知道我可以做到这一点非常困难,但我的印象是,鉴于这种情况和设置,我无法检索这些凭据和这个密码或多或少是不可能的。有什么方法可以做到这一点,我可以向感兴趣的各方保证它是安全的吗?

1 个答案:

答案 0 :(得分:3)

答案是:不,是不可能的,因此用户 无法 获取您服务的密码,但您可以采取措施制作 hard 让他们获取密码。

你可以做一些简单的事情

  • 将加密的密码存储在用户硬盘驱动器上(包括内部编译的exe文件和dll文件),只有将其存储在SecureString中且未加密的形式。
  • 使用代码混淆器使代码反向工程变得更加困难(您需要隐藏第一个建议中的解密函数)。
  • 继承人在这种“防御性编码”方面经验丰富,担任顾问,负责审查您的计划并使其更难以进行逆向工程。
  • 编写完全由您控制的代理服务,而不是托管在最终用户具有物理访问权限的任何设备上,以便调用您要保护的第三方服务,最终用户可以看到代理的登录信息但无法看到代理服务器背后的登录信息。

所有这些都需要花费精力/金钱,在设计这样的安全措施时,你必须问自己一个简单的问题“ 如果一个人克服了我所采取的保护措施,那将花多少钱?与世界分享? “。

一旦你得到了答案,你就需要花费大量的金钱/精力来保护你的产品,因为如果你花费更多,那么只要让信息泄露就会更便宜(这是关于软件开发和安全性的可悲事实)