Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery WebSocket与安全_Jquery_Security_Websocket_Libwebsockets - Fatal编程技术网

Jquery WebSocket与安全

Jquery WebSocket与安全,jquery,security,websocket,libwebsockets,Jquery,Security,Websocket,Libwebsockets,我希望托管一些基于websocket的应用程序,这些应用程序应该只能通过https页面访问。因此,服务器生成包含随机密钥的https页面。我想使用此密钥来防止来自外部的人间接访问WebSocket 我可以让每个web套接字客户端将密钥发送到websocket服务器,如果密钥不匹配,则关闭连接。但是,我更愿意更新WebSocket本身以传递密钥,并在密钥不匹配时自动拒绝连接。(这样,如果引入新的应用程序,就不会忘记执行检查) 我环顾四周,并没有找到多少关于WebSocket如何工作的深入文档 ws

我希望托管一些基于websocket的应用程序,这些应用程序应该只能通过https页面访问。因此,服务器生成包含随机密钥的https页面。我想使用此密钥来防止来自外部的人间接访问WebSocket

我可以让每个web套接字客户端将密钥发送到websocket服务器,如果密钥不匹配,则关闭连接。但是,我更愿意更新WebSocket本身以传递密钥,并在密钥不匹配时自动拒绝连接。(这样,如果引入新的应用程序,就不会忘记执行检查)

我环顾四周,并没有找到多少关于WebSocket如何工作的深入文档

wss连接的初始握手是否以明文形式发送(如果我将密钥附加到这些数据包,中间的人是否可以拦截它们?)。如果没有,是否有一种标准的方式在连接上发送这种元数据,或者我应该直接破解websocket源文件


我在服务器端使用libwebsockets,在客户端使用jquery.websockets。

安全WebSocket连接仅升级:

  • 如果/secure/为true,则客户端必须通过 打开连接后发送之前的连接 握手数据[RFC2818]。如果失败(例如,服务器的 无法验证证书),则客户端必须失败 关闭WebSocket连接并中止连接。否则,, 此频道上的所有进一步通信必须通过 加密隧道[RFC5246]

    客户端必须在TLS中使用服务器名称指示扩展 握手[RFC6066]

  • 在客户端,
    WebSocket
    界面由浏览器提供-当您到达
    onopen
    事件时,握手已经完成。您可以将密钥放入,但这肯定是一种黑客行为(因为
    协议
    用于实际注册的协议,而不是身份验证机制)


    另一种方法是将WebSocket封装在您自己的库中,该库处理第一条消息上的密钥交换,这样您的应用层就不必担心细节问题。

    谢谢,我将添加一项要求,即在交换任何其他消息之前,检查所有需要密钥的应用程序。