नए WebSocket प्रोटोकॉल में क्या अलग है

एजी कितामुरा
आइजी कितामुरा

पिछली सुरक्षा समस्याओं को हल करने के लिए, WebSocket प्रोटोकॉल स्पेसिफ़िकेशन को हाल ही में अपडेट किया गया है. यह काफ़ी हद तक स्थिर है. नीचे मौजूदा बदलावों के बारे में कुछ ज़रूरी जानकारी और बदलावों की खास जानकारी दी गई है.

WebSocket HyBi 00 के बाद से क्या बदलाव हुए हैं?

  • प्रोटोकॉल फ़्रेम का फ़ॉर्मैट बदल दिया गया है. हाइबी 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 ...                |
     +---------------------------------------------------------------+

सुरक्षा से जुड़ी समस्याओं को हल कर लिया गया है

  • HiBi 00 की तीन कुंजियों की जगह Sec-WebSocket-Key और Sec-WebSocket-Accept को जोड़ा जाता है. ब्राउज़र Sec-WebSocket-Key को रैंडम तरीके से जनरेट किया गया नंबर देता है. इसके बाद, सर्वर उसे WebSocket प्रोटोकॉल के खास जीयूआईडी (258EAFA5-E914-47DA-95CA-C5AB0DC85B11) और SHA1 / BASE64 वगैरह के साथ इस्तेमाल करके, Sec-WebSocket-Accept को दिखाता है, ताकि ब्राउज़र यह पुष्टि कर सके कि वह WebSocket को समझता है. इससे क्रॉस-प्रोटोकॉल के हमले से बचने में मदद मिलती है.
  • अब हर फ़्रेम पर, फ़्रेम मास्किंग की ज़रूरत है. यह प्रॉक्सी पर कैश पॉइज़निंग को रोकता है. Sec-WebSocket-Origin को इसलिए जोड़ा गया है, ताकि उन स्क्रिप्ट का ऐक्सेस रोका जा सके जिनके बारे में सेवा देने वाली कंपनी को जानकारी नहीं है.
  • Sec-WebSocket-Origin को HiBi 00 के ऑरिजिन कुंजी की जगह पर जोड़ा जाता है, ताकि उन स्क्रिप्ट का ऐक्सेस रोका जा सके जिनके बारे में सेवा देने वाली कंपनी को जानकारी नहीं है. ध्यान दें कि HyBi 11 पर यह सिर्फ़ "Origin" होगा.

JS API में किए गए बदलाव

  • subprotocol को अब कलेक्शन बनाया जा सकता है. इससे new WebSocket(String url, Array subprotocol) के मेथड सिग्नेचर की अनुमति मिलती है
  • .protocol एट्रिब्यूट [String]
  • .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 भी HiBi 10 के साथ काम करने की योजना है.