跨域会话和Web套接字

时间:2011-11-15 12:48:35

标签: html5 security websocket

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

更多详情:

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

  1. 由于HTML5sockets位于客户端,因此黑客可以创建他/她自己的套接字并以相同的方式连接到该服务器并使用某个id,因为这些只是简单的整数。
  2. 如果我们在数据中添加一些东西,那么坐在网络上的黑客可以像一些黑客那样用来进行会话劫持。
  3. 这就是为什么我不确定使用某种SSL或TLS是否能解决问题或某些PKI或其他数字证书。所以这就是我在这里问的原因。

    感谢

1 个答案:

答案 0 :(得分:2)

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

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

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