নতুন WebSocket প্রোটোকলের মধ্যে কি আলাদা

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 কে এলোমেলোভাবে জেনারেট করা নম্বর দেয়। তারপরে, সার্ভার এটিকে WebSocket প্রোটোকলের নির্দিষ্ট GUID ( 258EAFA5-E914-47DA-95CA-C5AB0DC85B11 ) এবং SHA1 / BASE64, ইত্যাদির সাথে Sec-WebSocket-Accept ফেরত দিতে ব্যবহার করে যাতে ব্রাউজার নিশ্চিত করতে পারে যে এটি WebSocket বোঝে৷ এটি একটি ক্রস-প্রটোকল আক্রমণ প্রতিরোধ করে।
  • প্রতিটি ফ্রেমে, ফ্রেম মাস্কিং এখন প্রয়োজন। এটি প্রক্সিতে ক্যাশে বিষক্রিয়া প্রতিরোধ করে। Sec-WebSocket-Origin যোগ করা হয়েছে এমন স্ক্রিপ্ট থেকে অ্যাক্সেস রোধ করার জন্য যা পরিষেবা প্রদানকারী জানেন না।
  • Sec-WebSocket-Origin HyBi 00-এর অরিজিন কী-এর জায়গায় যোগ করা হয়েছে এমন স্ক্রিপ্টগুলি থেকে অ্যাক্সেস রোধ করতে যা পরিষেবা প্রদানকারী জানেন না। মনে রাখবেন যে এটি HyBi 11-এ শুধুমাত্র " Origin " হবে।

JS API পরিবর্তন

  • new WebSocket(String url, Array subprotocol) এর একটি পদ্ধতি স্বাক্ষরের অনুমতি দিয়ে subprotocol এখন অ্যারে হতে পারে
  • .protocol অ্যাট্রিবিউট [স্ট্রিং]
  • .binaryType অ্যাট্রিবিউট [ব্লব|অ্যারেবাফার]
  • .extension [স্ট্রিং]
  • স্ট্যাটাস কোড এবং কারণ (কানেকশন বন্ধ কেন) CloseEvent এ যোগ করা হয়েছে। close() ফাংশনটি সেই অনুযায়ী এই দুটি আর্গুমেন্ট গ্রহণ করার জন্য পরিবর্তন করা হয়েছে।

এক্সটেনশন

  • Sec-WebSocket-Extensions যোগ করা হয়েছে। প্রস্তাবিত এক্সটেনশনগুলি হল:
  • deflate-frame ফ্রেমগুলিকে উৎসে সংকুচিত করে এবং গন্তব্যে বের করে দেয়।
  • x-google-mux মাল্টিপ্লেক্সিং সমর্থন করার জন্য কিন্তু প্রাথমিক পর্যায়ে আছে।

সার্ভার এবং ব্রাউজার বাস্তবায়ন উভয় ক্ষেত্রে HyBi 00 এবং HyBi 10 এর মধ্যে সামঞ্জস্য আছে?

  • সার্ভার বাস্তবায়ন হ্যান্ডশেক HTTP হেডার দেখে HyBi 00 এবং HyBi 10 উভয়কেই সমর্থন করতে পারে। যাইহোক, HyBi 00 সমর্থন করার জন্য এটি সুপারিশ করা হয় না যেহেতু এটি দুর্বল বলে পরিচিত।
  • WebSocket JavaScript API পুরানো এবং নতুন সংস্করণগুলির মধ্যে অনেকাংশে একই রকম। কিন্তু উপরে উল্লিখিত হিসাবে, আমরা HyBi 00 সমর্থন করার পরামর্শ দিই না যেহেতু এটি দুর্বল বলে পরিচিত।

কোন ব্রাউজার HyBi 10 সমর্থন করে?

  • Chrome 14 HyBi 10 প্রোটোকল সমর্থন করে যদিও উপরে উল্লিখিত WebSocket JavaScript API পরিবর্তনগুলি এখনও পথে রয়েছে। Firefox 7ও HyBi 10 সমর্থন করার পরিকল্পনা করেছে।