【问题标题】:Cross Domain sessions and web sockets跨域会话和 Web 套接字
【发布时间】:2011-11-17 01:06:05
【问题描述】:

我正在开发一个将使用 HTML5 套接字与其他服务器进行通信的站点。那时我们的用户将登录,我不能在其他服务器上编码。我在服务器端使用 PHP。我不知道其他服务器是否有 PHP。客户说 PKI 是一种解决方案。因此,如果用户在我们的服务器上登录,那么我开始使用 HTML5 套接字与其他服务器进行通信以发送和接收数据。那么其他服务器如何对它们进行身份验证呢?我还认为我可以拥有一个通过 HTML5 套接字发送的用户密钥(如 32hash 格式),同时其他服务器验证通信,然后开始与该用户合作。所以客户说黑客可以通过网络看到数据,所以我认为 SSL 可以解决这个问题。你们在这种情况下有什么建议?请指教

更多细节:

我们的用户和另一台服务器将使用 apache thrift 建立连接(将使用 TCP),场景是用户将登录到我们的站点,然后我们将通过 HTML5socket 将他们连接到不同域上的 apache thrift,所以在 HTML5socket 通信中,我们将转发用户 ID 以告诉 thrift 服务器这是哪个用户,所以没问题。但是有两个问题,

  1. 由于 HTML5sockets 位于客户端,因此黑客可以创建他/她自己的套接字并以相同的方式连接到该服务器并使用某些人的 id,因为这些只是简单的整数。
  2. 如果我们要在数据中附加一些东西,那么坐在网络上的黑客就可以得到它,就像一些黑客为了会话劫持所做的那样。

这就是为什么我不确定使用某种 SSL 或 TLS 是否会解决问题或某些 PKI 或其他数字证书的原因。所以这就是我在这里问这个的原因。

谢谢

【问题讨论】:

  • PKI 不是真正的解决方案,它不仅仅是完全矫枉过正,它根本不是适合这项工作的工具。真正的问题是您没有提供足够的信息来回答这个问题。谁在验证客户端?为什么?你知道什么是跨域代理吗?
  • @Rook 好的,我已经添加了更多细节,所以你现在可以告诉一些更好的事情吗?

标签: html security websocket


【解决方案1】:

SSL 无法解决此问题。 SSL 是关于在客户端和服务器之间创建安全链接,它绝对没有来保护服务器免受恶意客户端的侵害。 SSL 无法解决 SQL 注入问题,或者在您的情况下 Insecure Direct Object Reference 与用户 ID 相关。从这个 SSL 建议来看,您可能从未听说过 TamperData,它允许您读取/拦截和修改浏览器生成的所有 HTTPS 流量(包括 flash 和 JavaScript 等组件),BURP 更高级但做同样的事情。

正确的做法是拥有一个共享的会话存储,供您的服务器集合访问。客户端会收到一个非常大的随机数或cryptographic nonce,它用作验证令牌,有点像会话ID。此验证令牌用于在数据存储中查找会话状态。公共会话存储可以像 PHP 页面一样简单,它接受验证令牌作为参数并告诉您它是否链接到有效会话。

让第 3 方发出回调以验证会话确实是执行此操作的“正确方法”。可以使用密码学来做到这一点,尽管这是对密码学的滥用,因为它引入了攻击的可能性,而回调是绝对的。 PHP 服务器可以向 JavaScript 客户端发出一个HMAC 令牌,该令牌由用户 ID、时间戳和消息验证码组成。棘手的部分是 PHP 服务器和任何第 3 方都必须共享一个秘密才能验证消息身份验证代码。如果处理得当,您可以传输客户端可以传输令牌,并且第 3 方可以根据时间戳验证会话没有过期,并且您的服务器根据消息身份验证代码颁发了令牌(而不是黑客的伪造)。

【讨论】:

    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2011-12-30
    • 2010-11-23
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    相关资源
    最近更新 更多