सुरक्षा से जुड़ी पिछली समस्याओं को हल करने के लिए, WebSocket प्रोटोकॉल की खास बातों को हाल ही में अपडेट किया गया है. यह काफ़ी हद तक सही तरीके से काम करता है. यहां इन बदलावों के बारे में खास जानकारी दी गई है. साथ ही, मौजूदा लागू करने के बारे में कुछ नोट भी दिए गए हैं.
WebSocket HyBi 00 के बाद क्या बदलाव हुए हैं?
- प्रोटोकॉल फ़्रेम का फ़ॉर्मैट बदल गया है. HyBi 00 में हर फ़्रेम के लिए, हेड के लिए
"0x00"
और टेल के लिए"0xff"
का इस्तेमाल किया जाता था. HyBi 10 अब नए फ़ॉर्मैट का इस्तेमाल करता है, जैसे कि:
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/63) |
|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 ... |
+---------------------------------------------------------------+
सुरक्षा से जुड़ी समस्याएं हल कर दी गई हैं
- HyBi 00 की तीन कुंजियों की जगह
Sec-WebSocket-Key
औरSec-WebSocket-Accept
जोड़े गए हैं. ब्राउज़र,Sec-WebSocket-Key
को रैंडम तरीके से जनरेट किया गया नंबर देता है. इसके बाद, सर्वरSec-WebSocket-Accept
दिखाने के लिए, WebSocket प्रोटोकॉल के खास GUID (258EAFA5-E914-47DA-95CA-C5AB0DC85B11
) और SHA1 / BASE64 वगैरह के साथ इसका इस्तेमाल करता है, ताकि ब्राउज़र यह पुष्टि कर सके कि वह WebSocket को समझता है. इससे क्रॉस-प्रोटोकॉल हमले को रोका जा सकता है. - अब हर फ़्रेम पर, फ़्रेम मास्क करना ज़रूरी है. इससे प्रॉक्सी पर कैश मेमोरी को नुकसान पहुंचने से रोका जा सकता है.
Sec-WebSocket-Origin
को उन स्क्रिप्ट से ऐक्सेस को रोकने के लिए जोड़ा जाता है जिनके बारे में सेवा देने वाली कंपनी को जानकारी नहीं है. - HyBi 00 की ऑरिजिन कुंजी की जगह
Sec-WebSocket-Origin
जोड़ा जाता है, ताकि सेवा देने वाली कंपनी को उन स्क्रिप्ट का ऐक्सेस न मिल पाए जिनके बारे में उसकी जानकारी नहीं है. ध्यान दें कि HyBi 11 पर यह सिर्फ़ "Origin
" होगा.
JS API में किए गए बदलाव
subprotocol
अब ऐरे हो सकता है, जिससेnew WebSocket(String url, Array subprotocol)
के तरीके के हस्ताक्षर की अनुमति मिलती है.protocol
एट्रिब्यूट [स्ट्रिंग].binaryType
एट्रिब्यूट [Blob|ArrayBuffer].extension
[स्ट्रिंग]- स्थिति कोड और वजह (कनेक्शन बंद होने की वजह) को
CloseEvent
में जोड़ दिया गया है. इन दो आर्ग्युमेंट को स्वीकार करने के लिए,close()
फ़ंक्शन में भी बदलाव किया गया है.
एक्सटेंशन
Sec-WebSocket-Extensions
जोड़ा गया. सुझाए गए एक्सटेंशन ये हैं:deflate-frame
, सोर्स पर फ़्रेम को कंप्रेस करता है और डेस्टिनेशन पर उन्हें निकालता है.- मल्टीप्लेक्सिंग की सुविधा के लिए
x-google-mux
. फ़िलहाल, यह अभी शुरुआती चरण में है.
क्या सर्वर और ब्राउज़र, दोनों पर HyBi 00 और HyBi 10 के साथ काम किया जा सकता है?
- हैंडशेक एचटीटीपी हेडर को देखकर, सर्वर लागू करने की सुविधा, HyBi 00 और HyBi 10, दोनों के साथ काम कर सकती है. हालांकि, HyBi 00 का इस्तेमाल करने का सुझाव नहीं दिया जाता, क्योंकि यह असुरक्षित है.
- WebSocket JavaScript API, पुराने और नए वर्शन में काफ़ी हद तक एक जैसा है. हालांकि, जैसा कि ऊपर बताया गया है, हमारा सुझाव है कि आप HyBi 00 का इस्तेमाल न करें, क्योंकि यह असुरक्षित है.
HyBi 10 किन ब्राउज़र पर काम करता है?
- Chrome 14, HyBi 10 प्रोटोकॉल के साथ काम करता है. हालांकि, ऊपर बताए गए WebSocket JavaScript API में हुए बदलावों को अभी तक लागू नहीं किया गया है. Firefox 7 में भी HyBi 10 के साथ काम करने की सुविधा जोड़ी जाएगी.