ConnectionToken在SignalR中的作用究竟是什么?
我在fiddler中检查了SignalR握手,发现在对协商请求的响应中传递了ConnectionToken,然后传递了所有后续请求。
但是,在检查WS帧时,我没有看到该ConnectionToken的痕迹。是因为提琴手将它隐藏起来还是根本没有通过电线?
如果是因为它没有通过电线传输,它的'是什么?目的? 如果它通过电线传递,即使传输超过ssl,它是否被认为是秘密?攻击者如何利用该令牌?
答案 0 :(得分:0)
连接令牌是一个加密字符串,包含连接ID和用户名(如果可用)。它需要与客户端发送到服务器的每个http请求一起发送。如果服务器收到没有连接令牌的请求,或者如果它无法解密连接令牌,它将拒绝该请求。要了解有关连接令牌及其工作原理的更多信息,请查看this article。
您没有在websocket框架中看到连接令牌,因为在打开websocket时验证了连接令牌({{1}}请求)并且不需要进一步验证(其他人不可能使用这个websocket)。如果连接被删除并且客户端尝试重新连接,您将再次看到连接令牌。
其他传输发送更多的http请求(例如,用于发送消息),您将看到基本上每个请求(ping除外)都包含连接令牌。你可以看一下我前段时间写的SignalR protocol description了解更多细节。