基于Websocket的应用程序,安全性和实时良好实践?

时间:2016-03-19 13:01:15

标签: json node.js security websocket real-time

我使用websocket进行移动应用项目的实时通信。我实现了基本的安全逻辑: 要连接到服务器,客户端必须有一个密钥

- 当客户端连接到服务器时,它会立即发送包含身份验证信息的JSON对象

{
    action:"auth",
    device_id: "string",
    auth_key: "string",
    user: "string"
}

- 如果密钥正确,服务器将回复会话ID,或者断开连接 - 由此,客户端发送的每个数据都将是具有该会话ID的JSON对象,以便服务器可以识别它,所有未知客户端都被丢弃。

现在最大的问题是,WebSocket协议并不能理解JSON,所以我必须使用JSON.stringify()和JSON.parse()来发送我的数据,同时我必须检查会话id有效,这需要时间,应用程序不再平滑(在它之前)。

例如,如果它记录鼠标指针移动,这些数据将在鼠标移动时发送到服务器,因此它会在短时间内多次发送数据, 而且由于我实施的逻辑,它根本不顺利

{
    session_id: "string",
    user: "string"
    action:"mousemove",
    position:  {
        x: int, 
        y: int 
    }
}

我担心的是:

- 保护服务器,以便没有人可以访问它并在未经授权的情况下发送命令

- 真正保持实时

- 拥有良好的数据格式(如果可能,请使用JSON)

1 个答案:

答案 0 :(得分:2)

要确保您的通信安全,您需要使用TLS连接。 您正在使用用户身份验证的东西看起来没问题。

但奇怪的是,身份验证时间对您来说是一个问题,可能需要实现会话缓存,以便更快地进行会话ID验证。

JSON不是从大小角度进行网络数据传输的最佳格式,但WebSocket规范没有指定格式,它取决于您使用什么,JSON也可以,除非您真的关心流量节省。< / p>

为了使您的通信流畅,您可以在客户端聚合数据,例如每秒发送一次此数据。我相信你实际上并不需要那么多的鼠标坐标。