【问题标题】:Storing sensitive data in Silverlight在 Silverlight 中存储敏感数据
【发布时间】:2010-09-03 09:54:57
【问题描述】:

我有一个 Silverlight 业务应用程序。我想存储用户登录系统时输入的用户名和密码。

是否有人对我如何安全地存储这些数据有任何指示、提示等?我想将其加密存储,但我不确定将密码/盐存储在哪里,将其存储在客户端代码中是否安全?我猜这不会是因为这是发送给客户端的。

我通常会使用Windows Data Protection API (DPAPI) 对数据进行机器加密,这在silverlight 中是否可行?

应用程序将使用 Silverlight 4 在浏览器中运行。

更新

我在服务器端验证用户。目前我将用户名和密码加密存储在服务器端。我在客户端需要它们的原因是在使用Perpetuum Report Viewer 时,如果报告包含子报告或具有钻取,则系统会提示用户使用他们的凭据。我不希望用户需要再次输入他们的凭据,唯一的办法就是在客户端提供它们。

【问题讨论】:

  • 您能解释一下您的用例吗?在客户端存储密码从来没有充分的理由
  • 用例 - 我正在使用 Silverlight 的 Perpetuum 报告查看器。在钻取或子报告的情况下,系统会提示用户输入凭据。为了提供更好的用户体验,我想在这些情况下自动提供凭据,因为用户在登录时已经提供了凭据。足够充分的理由吗?

标签: silverlight security encryption silverlight-4.0


【解决方案1】:

在客户端存储这些信息绝不是安全的。 Silverlight 始终可以进行逆向引擎,您可以让用户/黑客难以获得它,但它绝不是 100% 安全的。

这是一篇关于在 Silverlight 中使用 AES 算法加密/解密数据的好文章: http://www.davidezordan.net/blog/?p=202

【讨论】:

  • 我意识到它永远不会 100% 安全,查看 Davide Zordan 的文章,看起来很有希望。
【解决方案2】:

为什么你不在服务器端存储敏感的东西?

Silverlight 组件可以进行逆向工程或/和修改。

让用户输入他的密码并将其加密发送到服务器端。然后在服务器端检查密码是否正确。

silverlight 控件中无需存储密码。

【讨论】:

  • 查看问题更新,我在服务器端进行验证并将其存储在那里,但需要在客户端与 3rd 方控件一起使用。
【解决方案3】:

存储的替代方法可能是使用LocalMessageSenderLocalMessageReceiver(某种形式的加密可能是谨慎的)在从同一域运行的 Silverlight 应用程序实例之间传递凭据。

【讨论】:

  • 您是否建议运行第二个 Silverlight 应用程序来存储数据并来回传递数据?
猜你喜欢
  • 2017-09-05
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
相关资源
最近更新 更多