मैं Writing a WebSocket server पर MDN द्वारा प्रदान की एक गाइड पीछा कर रहा था, गाइड बिल्कुल स्पष्ट और समझने में आसान है ...वेबसाकेट्स का मुखौटा क्यों लगाया जाता है?
हालांकि इस ट्यूटोरियल मैं फ्रेम है कि ग्राहक से संदेश WebSocket भर में भाग गया निम्नलिखित पर भेजे जाते हैं:
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 ... |
+---------------------------------------------------------------+
क्लाइंट द्वारा भेजे गए डेटा और फ्रेम को ठीक से अनमास्क करने के लिए कुछ फ़ंक्शंस बनाने के बाद, यह मुझे आश्चर्यचकित कर देता है कि डेटा को शुरू करने के लिए भी मुखौटा क्यों किया जाता है। मेरा मतलब है, आपको सर्वर से भेजे जा रहे डेटा को मास्क करने की ज़रूरत नहीं है ...
यदि किसी को बुरे कारणों से डेटा मिल रहा था, तो इसे मास्किंग कुंजी के साथ तुलना करना अपेक्षाकृत आसान हो सकता है क्योंकि मास्किंग कुंजी शामिल है पूरा संदेश या यहां तक कि बशर्ते उनके पास कुंजी न हो, फ्रेम में मास्किंग-कुंजी केवल 2 बाइट लंबी है। कुंजी बहुत आसानी से डेटा को अनमास्क कर सकती है क्योंकि कुंजी बहुत छोटी है।
एक और कारण है कि मैं सोच रहा हूं कि डेटा का मुखौटा क्यों है क्योंकि आप टीएलएस/एसएसएल पर और डब्ल्यूटीएस (एसएसएल) पर डब्लूएसएस (वेबस्केट सिक्योर) का उपयोग करके मास्किंग से बेहतर अपने वेबसाकेट डेटा को सुरक्षित कर सकते हैं।
क्या मुझे इस बात की याद आ रही है कि WebSockets को मुखौटा क्यों किया जाता है? ऐसा लगता है कि क्लाइंट द्वारा भेजे गए डेटा को अनमास्क करने के लिए यह व्यर्थ संघर्ष जोड़ता है जब यह किसी भी सुरक्षा को शुरू करने के लिए नहीं जोड़ता है।
आंशिक उत्तर यहां: [वेबसाकेट फ्रेम में मुखौटा क्या है] (http://stackoverflow.com/questions/14174184/what-is-the-mask-in-a-websocket-frame) और [मास्किंग है वेबसाकेट क्लाइंट से भेजते समय वास्तव में जरूरी है] (http://programmers.stackexchange.com/questions/226343/is-masking-really-necessary-when-sending-from-websocket-client) और [वेबशॉट फ़्रेमिंग कैश के विरुद्ध कैसे सुरक्षा करता है विषाक्तता] (http://security.stackexchange.com/questions/36930/how-does-websocket-frame-masking-protect-against-cache-poisoning)। – jfriend00
@ jfriend00, यह कुछ अंतर्दृष्टि प्रदान करता है कि मानक इसे परिभाषित क्यों करता है। लेकिन मेरे तर्कों के साथ मैं अभी भी समझ में नहीं आता कि क्लाइंट द्वारा इसकी आवश्यकता क्यों है। –
इसके अलावा [वेबसाकेट्स - हमें क्लाइंट से सर्वर पर डेटा मास्क करने की आवश्यकता क्यों है?] (Http://www.lenholgate.com/blog/2011/07/websockets---why-do-we-need-to-mask -डेटा-से-क्लाइंट-टू-सर्वर.html) – jfriend00