একই-অরিজিন নীতি শিথিল করতে Chrome document.domain পরিবর্তন করা অক্ষম করবে৷

যদি আপনার ওয়েবসাইট document.domain সেট করার উপর নির্ভর করে, তাহলে আপনার পদক্ষেপ প্রয়োজন।

আপডেট

  • 30 মে, 2023 : আমরা ঘোষণা করেছি যে document.domain সেটারের অবচয় Chrome 115-এ কার্যকর হবে।
  • এপ্রিল 7, 2023 : আমরা Chrome 112-এ এই পরিবর্তনটি শিপিংয়ের আগে একটি সমস্যা চিহ্নিত করেছি। document.domain সেটার ডিফল্টরূপে সরানোর জন্য বর্তমানে সাসপেন্ড করা হয়েছে এবং নতুন শিপিং মাইলফলক এখনও নির্ধারণ করা হয়নি। অনুগ্রহ করে এই ব্লগ পোস্টে আবার দেখুন বা blink-dev এবং এই থ্রেডে সদস্যতা নিন।
  • জানুয়ারী 20, 2023 : আপডেট করা টাইমলাইন— document.domain সেটার ডিফল্টরূপে Chrome 112 থেকে শুরু করে সরিয়ে দেওয়া হবে। এছাড়াও, document.domain আচরণ নিয়ন্ত্রণ করার জন্য এন্টারপ্রাইজ নীতি সম্পর্কে একটি উল্লেখ যোগ করা হয়েছে।
  • 25 জুলাই, 2022 : আপডেট করা টাইমলাইন— document.domain সেটার Chrome 109 থেকে শুরু করে ডিফল্টভাবে সরিয়ে দেওয়া হবে।
  • ফেব্রুয়ারী 4, 2022 : নতুন টাইমলাইনের সাথে আপডেট করা হয়েছে - আমরা Chrome 100 থেকে শুরু করে ইস্যু প্যানেলে একটি সতর্কতা দেখাব, Chrome 106 থেকে শুরু করে ডিফল্টরূপে document.domain সেটার সরিয়ে ফেলব।

document.domain মূল হোস্টনাম পেতে বা সেট করার জন্য ডিজাইন করা হয়েছে।

Chrome এ, ওয়েবসাইটগুলি document.domain সেট করতে অক্ষম হবে৷ ক্রস-অরিজিন যোগাযোগের জন্য আপনাকে বিকল্প পদ্ধতি ব্যবহার করতে হবে, যেমন postMessage() বা চ্যানেল মেসেজিং API। আমরা Chrome 112 কে লক্ষ্য করছি এই পরিবর্তনটি দ্রুততম সময়ে পাঠানোর জন্য, কিন্তু এটি Intent to Ship- এর প্রতিক্রিয়ার উপর নির্ভরশীল।

যদি আপনার ওয়েবসাইট ঠিকভাবে কাজ করার জন্য document.domain এর মাধ্যমে একই-অরিজিন নীতি শিথিলতার উপর নির্ভর করে, তাহলে সাইটটিকে একটি Origin-Agent-Cluster: ?0 শিরোনাম পাঠাতে হবে, যেমন অন্যান্য সমস্ত নথির জন্য সেই আচরণের প্রয়োজন হবে (মনে রাখবেন document.domain শুধুমাত্র একটি নথি এটি সেট করলে কোন প্রভাব নেই)।

কেন document.domain অপরিবর্তনীয়?

অনেক ওয়েবসাইট একই-সাইট কিন্তু ক্রস-অরিজিন পৃষ্ঠাগুলির মধ্যে যোগাযোগের অনুমতি দেওয়ার জন্য document.domain সেট করে।

এটি কিভাবে ব্যবহার করা হয় তা এখানে:

ধরা যাক https://parent.example.com এর একটি পৃষ্ঠা https://video.example.com থেকে একটি iframe পৃষ্ঠা এম্বেড করে। এই পৃষ্ঠাগুলিতে বিভিন্ন সাবডোমেনের সাথে একই eTLD+1 ( example.com ) রয়েছে৷ যখন উভয় পৃষ্ঠার document.domain 'example.com' তে সেট করা হয়, তখন ব্রাউজার দুটি মূলকে একই-উৎস হিসাবে বিবেচনা করে।

https://parent.example.com এর জন্য document.domain সেট করুন:

// Confirm the current origin of "parent.example.com"
console.log(document.domain);

// Set the document.domain
document.domain = 'example.com';
console.log(document.domain);

https://video.example.com এর জন্য document.domain সেট করুন:

// Confirm the current origin of "video.example.com"
console.log(document.domain);

// Set the document.domain
document.domain = 'example.com';
console.log(document.domain);

আপনি এখন https://parent.example.comhttps://video.example.com বিপরীতে একটি ক্রস-অরিজিন DOM ম্যানিপুলেশন তৈরি করতে পারেন।

ওয়েবসাইটগুলি document.domain সেট করে যাতে একই-সাইটের নথিগুলিকে আরও সহজে যোগাযোগ করা সম্ভব হয়৷ যেহেতু এই পরিবর্তনটি একই-অরিজিন নীতি শিথিল করে , তাই মূল পৃষ্ঠাটি iframe-এর নথিতে অ্যাক্সেস করতে এবং DOM ট্রি অতিক্রম করতে সক্ষম হয় এবং এর বিপরীতে।

এটি একটি সুবিধাজনক কৌশল, তবে এটি একটি নিরাপত্তা ঝুঁকি প্রবর্তন করে।

document.domain এর সাথে নিরাপত্তা সংক্রান্ত উদ্বেগ

document.domain আশেপাশে নিরাপত্তা সংক্রান্ত উদ্বেগের কারণে স্পেসিফিকেশনের পরিবর্তন হয়েছে যা ব্যবহারকারীদের এটি ব্যবহার এড়াতে সতর্ক করেঅন্যান্য ব্রাউজার বিক্রেতাদের সাথে বর্তমান আলোচনা একই দিকে চলছে।

উদাহরণস্বরূপ, যখন দুটি পৃষ্ঠা document.domain সেট করে, তারা ভান করতে পারে যেন তারা একই-অরিজিন। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন এই পৃষ্ঠাগুলি বিভিন্ন সাবডোমেনের সাথে একটি শেয়ার করা হোস্টিং পরিষেবা ব্যবহার করে৷ document.domain সেট করা একই পরিষেবা দ্বারা হোস্ট করা অন্যান্য সমস্ত সাইটের অ্যাক্সেস খুলে দেয়, যা আক্রমণকারীদের আপনার সাইটগুলিতে অ্যাক্সেস করা সহজ করে তোলে৷ এটা সম্ভব কারণ document.domain ডোমেনের পোর্ট নম্বর অংশটিকে উপেক্ষা করে।

document.domain সেট করার নিরাপত্তার প্রভাব সম্পর্কে আরও জানতে, MDN-এ "Document.domain" পৃষ্ঠা পড়ুন।

Chrome 112-এ document.domain অপরিবর্তনীয় করার পরিকল্পনা করছে৷

আমার সাইট প্রভাবিত হলে আমি কিভাবে জানব?

আপনার ওয়েবসাইট এই পরিবর্তন দ্বারা প্রভাবিত হলে, Chrome DevTools সমস্যা প্যানেলে সতর্ক করবে। উপরের ডানদিকে হলুদ পতাকাটি লক্ষ্য করুন।

document.domain পরিবর্তন করা হলে, সমস্যা প্যানেলে একটি সতর্কতা প্রদর্শিত হয়।
document.domain পরিবর্তন করা হলে, সমস্যা প্যানেলে একটি সতর্কতা প্রদর্শিত হয়।

আপনার কাছে রিপোর্টিং এন্ডপয়েন্ট সেট আপ থাকলে, আপনাকে অবচয় প্রতিবেদনও পাঠানো হবে। বিদ্যমান প্রতিবেদন সংগ্রহ পরিষেবাগুলির সাথে বা আপনার নিজস্ব ইন-হাউস সমাধান তৈরি করে রিপোর্টিং API কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানুন।

Chrome থেকে সরানোর জন্য নির্ধারিত সমস্ত API খুঁজে পেতে আপনি LightHouse deprecated API অডিটের মাধ্যমে আপনার সাইট চালাতে পারেন৷

বিকল্প ক্রস-অরিজিন যোগাযোগ

এই সময়ে, আপনার ওয়েবসাইটের জন্য document.domain প্রতিস্থাপন করার জন্য আপনার কাছে তিনটি বিকল্প রয়েছে।

postMessage() বা চ্যানেল মেসেজিং API ব্যবহার করুন

বেশিরভাগ ব্যবহারের ক্ষেত্রে, ক্রস-অরিজিন postMessage() বা চ্যানেল মেসেজিং API document.domain প্রতিস্থাপন করতে পারে।

নিম্নলিখিত উদাহরণে:

  1. https://parent.example.com একটি আইফ্রেমের মধ্যে https://video.example.com অনুরোধ করে postMessage() এর মাধ্যমে একটি বার্তা পাঠানোর মাধ্যমে DOM ম্যানিপুলেট করার জন্য।
  2. https://video.example.com মেসেজ পাওয়ার সাথে সাথে DOM ম্যানিপুলেট করে এবং সাফল্যের কথা অভিভাবককে জানিয়ে দেয়।
  3. https://parent.example.com সাফল্য স্বীকার করে।

https://parent.example.com এ:

// Send a message to https://video.example.com
iframe.postMessage('Request DOM manipulation', 'https://video.example.com');

// Receive messages
iframe.addEventListener('message', (event) => {
  // Reject all messages except ones from https://video.example.com
  if (event.origin !== 'https://video.example.com') return;

  // Filter success messages
  if (event.data === 'succeeded') {
    // DOM manipulation is succeeded
  }
});

https://video.example.com এ:

// Receive messages
window.addEventListener('message', (event) => {
  // Reject all messages except ones from https://parent.example.com
  if (event.origin !== 'https://parent.example.com') return;

  // Do a DOM manipulation on https://video.example.com.

  // Send a success message to https://parent.example.com
  event.source.postMessage('succeeded', event.origin);
});

এটি চেষ্টা করুন এবং দেখুন কিভাবে এটি কাজ করে. আপনার যদি নির্দিষ্ট প্রয়োজনীয়তা থাকে যা postMessage() বা চ্যানেল মেসেজিং API-এর সাথে কাজ করবে না, তাহলে @ChromiumDev-এর মাধ্যমে Twitter- এ আমাদের জানান বা document.domain ট্যাগ সহ Stack Overflow-এ জিজ্ঞাসা করুন।

একটি শেষ অবলম্বন হিসাবে, Origin-Agent-Cluster: ?0 হেডার পাঠান

আপনার কাছে যদি document.domain সেট করা চালিয়ে যাওয়ার দৃঢ় কারণ থাকে, তাহলে আপনি Origin-Agent-Cluster: ?0 রেসপন্স হেডার টার্গেট ডকুমেন্টের সাথে পাঠাতে পারেন।

Origin-Agent-Cluster: ?0

Origin-Agent-Cluster হেডার ব্রাউজারকে নির্দেশ দেয় যে ডকুমেন্টটি অরিজিন-কীড এজেন্ট ক্লাস্টার দ্বারা পরিচালনা করা উচিত কিনা। Origin-Agent-Cluster সম্পর্কে আরও জানতে, Origin-Agent-Cluster শিরোনামের সাথে কর্মক্ষমতা বিচ্ছিন্নতার অনুরোধ পড়ুন।

আপনি যখন এই শিরোনামটি পাঠান, তখন আপনার নথিটি ডিফল্টরূপে অপরিবর্তনীয় হয়ে যাওয়ার পরেও document.domain সেট করা চালিয়ে যেতে পারে৷

এন্টারপ্রাইজ নীতির জন্য OriginAgentClusterDefaultEnabled সক্রিয় কনফিগার করুন

ঐচ্ছিকভাবে, আপনার প্রশাসক আপনার প্রতিষ্ঠান জুড়ে ক্রোম ইন্সট্যান্সে document.domain ডিফল্টভাবে সেট করার জন্য OriginAgentClusterDefaultEnabled নীতিকে false কনফিগার করতে পারেন। আরও জানতে, Chrome এন্টারপ্রাইজ নীতি তালিকা এবং ব্যবস্থাপনা পড়ুন | ডকুমেন্টেশন

ব্রাউজার সামঞ্জস্য

সম্পদ

স্বীকৃতি

আনস্প্ল্যাশে ব্রেডন অ্যান্ডারসনের ছবি