byłem po przewodnika dostarczonego przez MDN na Writing a WebSocket server, przewodnik jest bardzo proste i łatwe do zrozumienia ...Dlaczego maski WebSockets są maskowane?
Jednak na następujące samouczek natknąłem ramce websocket wiadomości od klienta są przesyłane w:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-------+-+-------------+-------------------------------+
|F|R|R|R| opcode|M| Payload len | Extended payload length |
|I|S|S|S| (4) |A| (7) | (16/64) |
|N|V|V|V| |S| | (if payload len==126/127) |
| |1|2|3| |K| | |
+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
| Extended payload length continued, if payload len == 127 |
+ - - - - - - - - - - - - - - - +-------------------------------+
| |Masking-key, if MASK set to 1 |
+-------------------------------+-------------------------------+
| Masking-key (continued) | Payload Data |
+-------------------------------- - - - - - - - - - - - - - - - +
: Payload Data continued ... :
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Payload Data continued ... |
+---------------------------------------------------------------+
Po wykonaniu niektórych funkcji w celu prawidłowego zdemaskowania danych i ramki wysyłanej przez klienta, zastanawiałem się, dlaczego dane są maskowane na początku. Nie musisz maskować danych, które wysyłasz z serwera ...
Jeśli ktoś otrzymywał dane z niewłaściwych powodów, względnie łatwo było go zdekasować, ponieważ klucz jest dołączony do cała wiadomość. Lub nawet jeśli nie mają klucza, klucz maskujący w ramce ma tylko 2 bajty. Ktoś może łatwo zdemaskować dane, ponieważ klucz jest bardzo mały.
Innym powodem, dla którego zastanawiam się, dlaczego dane są maskowane, jest to, że można po prostu lepiej chronić dane WebSocket niż maskowanie przy użyciu WSS (WebSockets Secure) na TLS/SSL i przez HTTPS.
Czy brakuje mi sensu, dlaczego WebSockets są zamaskowane? Wydaje się, że po prostu dodaje bezsensownej walki, aby zdemaskować dane wysyłane przez klienta, gdy nie dodaje żadnych zabezpieczeń na początek. Komentarz
Częściowa odpowiedź tutaj: [Czym jest maska w ramce webSocket] (http://stackoverflow.com/questions/14174184/what-is-the-mask-in-a-websocket-frame) i [Czy maskowanie naprawdę konieczne przy wysyłaniu z klienta webSocket] (http://programmers.stackexchange.com/questions/226343/is-masking-really-necessary-when-sending-from-websocket-client) i [W jaki sposób ramka websocket chroni przed pamięcią podręczną zatrucie] (http://security.stackexchange.com/questions/36930/how-does-websocket-frame-masking-protect-against-cache-poisoning). – jfriend00
@ jfriend00, Zapewnia to pewien wgląd w to, dlaczego norma to definiuje. Ale z moimi argumentami wciąż nie rozumiem, dlaczego jest to wymagane przez klienta. –
Również [WebSockets - Dlaczego musimy maskować dane od klienta do serwera?] (Http://www.lenholgate.com/blog/2011/07/websockets---why-do-we-need-to-mask -data-from-client-to-server.html) – jfriend00