সীমাবদ্ধ-বৈশিষ্ট্যের সাথে নিরাপদ পপআপ ইন্টারঅ্যাকশন

পপআপগুলির সাথে ইন্টারঅ্যাক্ট করার সময় ক্রস-অরিজিন আইসোলেশন এবং ক্রস-সাইট লিক থেকে সুরক্ষা পান।

ক্রস-অরিজিন ওপেনার পলিসি (COOP)- এর জন্য একটি নতুন ভ্যালু উপলব্ধ হয়েছে: restrict-properties । এটি নিরাপত্তা সংক্রান্ত সুবিধা নিয়ে আসে এবং ক্রস-অরিজিন আইসোলেশন গ্রহণ করা সহজ করে তোলে, একই সাথে আপনার সাইটকে পেমেন্ট, অথেনটিকেশন বা অন্যান্য ব্যবহারের জন্য থার্ড-পার্টি পপআপের সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়।

restrict-properties নিয়ে পরীক্ষা-নিরীক্ষা শুরু করতে Chrome 116 থেকে শুরু হওয়া origin ট্রায়ালে অংশগ্রহণ করুন।

restrict-properties কেন ব্যবহার করবেন

restrict-properties দুটি প্রধান ব্যবহার রয়েছে:

ভাঙন ছাড়াই বিভিন্ন স্থানে ছিদ্র প্রতিরোধ করুন

ডিফল্টরূপে, যেকোনো ওয়েবসাইট আপনার অ্যাপ্লিকেশনটি একটি পপআপে খুলতে এবং সেটির একটি রেফারেন্স পেতে পারে।

একটি ক্ষতিকারক ওয়েবসাইট ক্রস-সাইট লিকের মতো আক্রমণ চালানোর জন্য এটিকে নিজেদের সুবিধার্থে ব্যবহার করতে পারে। এই ঝুঁকি কমাতে, আপনি Cross-Origin-Opener-Policy (COOP) হেডার ব্যবহার করতে পারেন।

এখন পর্যন্ত, Cross-Origin-Opener-Policy জন্য আপনার বিকল্পগুলি সীমিত ছিল। আপনি হয়:

  • same-origin, যা পপআপের সাথে সমস্ত ক্রস-অরিজিন ইন্টারঅ্যাকশন ব্লক করে।
  • same-origin-allow-popups সেট করুন, যা এমন সমস্ত ক্রস-অরিজিন ইন্টারঅ্যাকশন ব্লক করে যা আপনার সাইটকে পপআপে খোলে।
  • unsafe-none সেট করুন, যা পপআপের সাথে সকল ক্রস-অরিজিন ইন্টারঅ্যাকশনের অনুমতি দেয়।

এর ফলে, যেসব ওয়েবসাইট পপ-আপে খুলতে হয় এবং খোলার জন্য সেটির সাথে ইন্টারঅ্যাক্ট করতে হয়, তাদের পক্ষে COOP প্রয়োগ করা অসম্ভব হয়ে পড়ে। এতে সিঙ্গেল সাইন-অন এবং পেমেন্টের মতো গুরুত্বপূর্ণ ব্যবহারের ক্ষেত্রগুলো ক্রস-সাইট লিক থেকে অরক্ষিত থেকে যায়।

Cross-Origin-Opener-Policy: restrict-properties এটির সমাধান করে।

restrict-properties চালু থাকলে, ফ্রেম কাউন্টিং এবং অন্যান্য ক্রস-সাইট লিক আক্রমণের জন্য ব্যবহারযোগ্য প্রপার্টিগুলো আর পাওয়া যায় না—কিন্তু postMessage এবং closed মাধ্যমে উইন্ডোগুলোর মধ্যে সাধারণ যোগাযোগের অনুমতি থাকে।

এটি মূল ব্যবহারিক ক্ষেত্রগুলো বজায় রেখে একটি সাইটের নিরাপত্তা উন্নত করে। উদাহরণস্বরূপ:

  • আপনি যদি একটি পপআপে কোনো পরিষেবা প্রদান করেন, তাহলে Cross-Origin-Opener-Policy: restrict-properties সেট করলে তা আপনাকে বিভিন্ন ধরনের ক্রস-সাইট লিক আক্রমণ থেকে সুরক্ষিত রাখবে। আপনি আগের মতোই সেই সমস্ত পৃষ্ঠা খুলতে পারবেন যা আপনি খুলতে পারতেন।
  • আপনার যদি কোনো ক্রস-অরিজিন পপআপ অ্যাক্সেস করার প্রয়োজন হয়, Cross-Origin-Opener-Policy: restrict-properties সেট করলে তা একইভাবে আপনার সাইটকে আইফ্রেম গণনা থেকে সুরক্ষিত রাখবে। আপনি বর্তমানে যে পপআপগুলো খুলতে পারেন, ঠিক সেই একই পপআপগুলো তখনও খুলতে পারবেন।
  • যদি পেজ খোলা ব্যক্তি এবং পেজ গ্রহণকারী উভয়ই হেডার সেট করে এবং পেজগুলো ক্রস-অরিজিন হয়, তবে এর আচরণ এমন হয় যেন তাদের মধ্যে একজন হেডার সেট করেছে। যদি পেজগুলো সেম-অরিজিন হয়, তবে সম্পূর্ণ অ্যাক্সেস দেওয়া হয়।

আপনার সাইটকে ক্রস-অরিজিন আইসোলেটেড করুন

কেন আমাদের ক্রস-অরিজিন আইসোলেশন প্রয়োজন

কিছু ওয়েব এপিআই (API) স্পেক্টার (Spectre)- এর মতো সাইড-চ্যানেল অ্যাটাকের ঝুঁকি বাড়িয়ে দেয়। সেই ঝুঁকি কমাতে, ব্রাউজারগুলো ক্রস-অরিজিন আইসোলেশন (cross-origin isolation ) নামক একটি অপ্ট-ইন-ভিত্তিক বিচ্ছিন্ন পরিবেশ প্রদান করে। একটি ক্রস-অরিজিন আইসোলেটেড অবস্থায়, ওয়েবপেজটি শেয়ার্ডঅ্যারেবাফার (SharedArrayBuffer) , পারফরম্যান্স.মেজারইউজারএজেন্টস্পেসিফিকমেমোরি() (performance.measureUserAgentSpecificMemory()) এবং উন্নত রেজোলিউশনসহ উচ্চ-নির্ভুল টাইমারের মতো বিশেষ সুবিধাগুলো ব্যবহার করতে পারে, এবং একই সাথে অপ্ট-ইন না করা পর্যন্ত অরিজিনটিকে অন্যদের থেকে বিচ্ছিন্ন রাখে।

এখন পর্যন্ত, এই API-গুলো ব্যবহার করার জন্য আপনাকে Cross-Origin-Opener-Policy: same-origin সেট করতে হতো। তবে, এর ফলে আপনার প্রয়োজনীয় যেকোনো ক্রস-অরিজিন পপআপ ফ্লো, যেমন সিঙ্গেল সাইন-অন এবং পেমেন্টস, ব্যাহত হতো।

Cross-Origin-Opener-Policy: restrict-properties Cross-Origin-Opener-Policy: same-origin restrict-properties ব্যবহার করা যাবে। এটি ওপেনার সম্পর্ক ছিন্ন করার পরিবর্তে, সম্পর্কটিকে কেবল window.postMessage() এবং window.closed এর ন্যূনতম যোগাযোগের উপসেটে সীমাবদ্ধ করে।

নিম্নলিখিত দুটি হেডারের সাহায্যে আপনি ক্রস-অরিজিন আইসোলেশন সক্রিয় করতে পারবেন:

Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: require-corp

অথবা

Cross-Origin-Opener-Policy: restrict-properties
Cross-Origin-Embedder-Policy: credentialless

credentialless সম্পর্কে আরও জানুন COEP: credentialless ব্যবহার করে CORP হেডার ছাড়াই ক্রস-অরিজিন রিসোর্স লোড করুন” অংশে।

ডেমো

এই ক্রস-অরিজিন আইসোলেশন ডেমোতে বিভিন্ন হেডার অপশন ব্যবহার করে দেখুন।

উৎস পরীক্ষার সাথে পরীক্ষা

Cross-Origin-Opener-Policy: restrict-properties নিয়ে পরীক্ষা করার জন্য, অরিজিন ট্রায়ালটিতে অংশগ্রহণ করুন।

ব্রাউজার সমর্থন

Cross-Origin-Opener-Policy: restrict-properties বর্তমানে শুধুমাত্র ক্রোমে সমর্থিত। অন্যান্য ব্রাউজারগুলো মান নির্ধারণের আলোচনায় সক্রিয়ভাবে অংশগ্রহণ করছে।

প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

আমার ওয়েবসাইটকে একই-অরিজিন পপআপের সাথে যোগাযোগ করতে হবে, ক্রস-অরিজিন আইসোলেশন চালু করার জন্য আমার কি COOP: restrict-properties ব্যবহার করা উচিত?

পপআপ এবং আপনার মূল পৃষ্ঠা উভয় স্থানেই COOP: restrict-properties সেট করলে কোনো সীমাবদ্ধতা তৈরি হবে না। এটি শুধুমাত্র পপআপে অথবা শুধুমাত্র মূল পৃষ্ঠায় সেট করলে, খোলার পর postMessage এবং closed ছাড়া অন্য কোনো প্রপার্টিতে অ্যাক্সেস করা যাবে না, এমনকি যদি সেগুলো same-origin-এর হয়।

অনুমোদিত বৈশিষ্ট্যগুলির সেট কি নির্দিষ্ট?

এখন পর্যন্ত প্রাপ্ত মতামতের ভিত্তিতে, বেশিরভাগ ওয়ার্কফ্লোর জন্য window.postMessage এবং window.closed যথেষ্ট হবে বলে ধারণা করা হচ্ছে, কিন্তু আমরা এখনও অন্যান্য প্রপার্টি ব্যবহারের সুযোগ উন্মুক্ত করার বিষয়টি বিবেচনা করছি। আপনার যদি এমন কোনো ব্যবহারের ক্ষেত্র (use case) থাকে যা শুধুমাত্র postMessage এবং closed ব্যবহার করে সমাধান করা যাচ্ছে না , তাহলে 'Intent to Experiment' থ্রেডে আপনার মতামত জানান।

সম্পদ