要打開WebSocket,客戶端連接到服務器上的tcp套接字,然後開始握手。爲什麼WebSockets在握手中使用散列?
客戶端的握手包含一個base64編碼密鑰(Sec-WebScoket-Key)。
服務器應該用SHA-1(key + magic_constant),base64編碼進行響應。 magic_constant是協議特定的字符串(Sec-Websocket-Accept)。
這是什麼目的?我沒有看到這樣做的任何明顯的安全原因。它不認證任何一方。單一的SHA-1計算對於工作證明來說並不算多。
攻擊者不能輕易地通過telnet連接到HTTP服務器併發送錯誤數據?我並沒有真正看到這種握手如何阻止問題,甚至使問題變得更加困難。 – notallama