富客户端中的Web安全性

时间:2010-06-21 18:53:43

标签: web-applications security

我目前正在为使用富客户端的客户构建Web应用程序。 (柔性)

在此应用程序中,用户具有密码以及整个系统中用于识别目的的一些其他关键属性。 (例如母亲的娘家姓名)。

用户最初使用其密码登录。然后,在整个应用程序中,每当用户即将执行“破坏性”操作时,他们都需要输入其中一个其他识别数据。

我的客户要求我在登录后加载这些属性,将它们存储在内存中,并在进行执行破坏性操作的服务器调用之前,在客户端上对此数据执行验证。

这使我感到潜在的安全风险,因为欺骗Web客户端并检索通过网络发送的这些数据是可能的(虽然很难)。我的客户认为我是偏执狂并且正在催促我。

需要考虑的一些要点:

  • 该应用程序通过HTTPS提供
  • 所有客户端/服务器通信都通过HTTPS进行
  • 此数据仅在登录后发送给客户
  • 在登录期间,会话将发出安全cookie。

因此,在很大程度上,应用程序是相当安全的。

然而,我的直觉告诉我,虽然可能很难破解数据,但它仍然不如我们根本不发送它,并在服务器上验证。

我是偏执狂,还是真正的安全隐患?

如果这是一个有效的问题,是否有任何我可以指示我的客户的最佳实践文件,以证实我的观点?

2 个答案:

答案 0 :(得分:4)

检查应该在服务器端完成。

如果未经授权的人员可以访问会话ID,他总是可以使用会话ID拨打服务器并下载个人属性。这是将私人信息泄露给攻击者。

更重要的是,攻击者并不关心您在flex应用中执行的验证。他将使用网络嗅探器来查看正在进行的服务器调用 - 并且由于这些服务器调用不需要个人属性,因此他可以绕过您的安全模型。

简而言之,所有安全验证都应该在服务器端完成。这是一个常见的弱点,您可以在此页http://cwe.mitre.org/data/definitions/602.html

上阅读更多相关信息

答案 1 :(得分:2)

如果必须这样做,请在会话开始时将服务器上的信息发送到客户端MD5哈希值。这应该是非常安全的。在任何情况下,您都不应该以明确的未加密或未加密的方式发送实际数据本身。也不要在会话期间将数据保留在任何位置,如磁盘。

更好的方法是接受输入并对其进行散列,然后将其发送到服务器进行验证。

在一天结束时,服务器应该强制执行安全性而不是客户端。 HTTPS只是行级安全性。应用程序服务器应该强制执行信息安全规则,而不是其客户端。