代码之家  ›  专栏  ›  技术社区  ›  Marty Pitt

富客户端中的Web安全性

  •  3
  • Marty Pitt  · 技术社区  · 16 年前

    我目前正在为使用富客户机的客户构建一个Web应用程序。(Flex)

    在这个应用程序中,用户有一个密码,以及一些在整个系统中用于标识的其他关键属性。(如母亲的婚前姓)。

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

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

    这对我来说是一个潜在的安全风险,因为欺骗Web客户机并检索通过网络发送的数据是可能的(尽管困难)。我的顾客认为我有点多疑,并在催促我向前走。

    需要考虑的一些关键点:

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

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

    然而,我的直觉告诉我,尽管黑客攻击数据可能很困难,但它仍然比我们根本不发送数据并在服务器上进行验证时的安全性要差。

    我是偏执狂,还是这是真正的安全风险?

    如果这是一个有效的关注点,是否有任何我可以向我的客户指出的最佳实践文档,以证实我的观点?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Sripathi Krishnan    16 年前

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

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

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

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

        2
  •  2
  •   Keith Adler    16 年前

    如果你必须这么做 在会话MD5散列开始时,将来自服务器的信息片段发送到客户机。这应该很安全。在任何情况下,您都不应该将实际数据本身以清晰的、未隐藏或未加密的方式发送。也不要在会话期间将数据保存在任何位置,如磁盘。

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

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