1

我非常有信心,答案是否定的,但我想涵盖我所有的基础。

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

或者,更具体地说,有什么方法可以在应用程序或应用程序和文件(用户也可以访问两者)中存储密码、某种形式的凭据,我可以自信地声明用户不能用于提取凭据并获得对该服务的一般访问权限?

我知道我可能会使这变得非常困难,但我的印象是,鉴于这种情况和设置,我无法或多或少地无法检索这些凭据和密码。有什么方法可以做到这一点,我可以向相关方保证它是安全的?

4

1 回答 1

3

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

你可以做的一些简单的事情

  • 将加密的密码存储在用户硬盘驱动器上(包括内部编译的 exe 和 dll 文件),仅在一段SecureString时间内以未加密的形式存储。
  • 使用代码混淆器使逆向工程变得更加困难(您需要从第一个建议中隐藏解密功能)。
  • 继承人在这种“防御性编码”方面经验丰富,作为顾问来检查您的程序并使其更难进行逆向工程。
  • 编写一个完全由您控制的代理服务,并且不托管在最终用户可以物理访问的任何设备上,该设备可以调用您要保护的第 3 方服务,最终用户可以看到您的代理的登录名,但看不到查看登录以了解代理背后的内容。

所有这些都需要付出努力/金钱,在设计这样的安全措施时,您必须问自己一个简单的问题:“如果一个人克服了我设置的保护措施并与世界分享,我会花多少钱? ”。

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

于 2014-05-21T21:36:52.837 回答