একই-অরিজিন নীতি হল একটি ব্রাউজার নিরাপত্তা বৈশিষ্ট্য যা সীমাবদ্ধ করে যে কীভাবে একটি উৎসের নথি এবং স্ক্রিপ্টগুলি অন্য উত্সের সংস্থানগুলির সাথে যোগাযোগ করতে পারে৷
একটি ব্রাউজার একসাথে একাধিক সাইট থেকে সম্পদ লোড এবং প্রদর্শন করতে পারে। আপনার একই সময়ে একাধিক ট্যাব খোলা থাকতে পারে, অথবা একটি সাইট বিভিন্ন সাইট থেকে একাধিক আইফ্রেম এম্বেড করতে পারে। যদি এই সংস্থানগুলির মধ্যে মিথস্ক্রিয়ায় কোনও সীমাবদ্ধতা না থাকে, এবং একটি স্ক্রিপ্ট আক্রমণকারীর দ্বারা আপস করে, স্ক্রিপ্টটি ব্যবহারকারীর ব্রাউজারে সবকিছু প্রকাশ করতে পারে।
একই-উৎস নীতি একটি ভিন্ন উত্স থেকে লোড করা সংস্থানগুলিতে পড়ার অ্যাক্সেস ব্লক করে এটি ঘটতে বাধা দেয়৷ "কিন্তু অপেক্ষা করুন," আপনি বলেন, "আমি সব সময় অন্য উৎস থেকে ছবি এবং স্ক্রিপ্ট লোড করি।" ব্রাউজারগুলি কয়েকটি ট্যাগকে একটি ভিন্ন উত্স থেকে সংস্থানগুলি এম্বেড করার অনুমতি দেয়৷ এই নীতিটি বেশিরভাগই একটি ঐতিহাসিক আর্টিফ্যাক্ট এবং এটি আপনার সাইটকে আইফ্রেম ব্যবহার করে ক্লিকজ্যাকিংয়ের মতো দুর্বলতার কাছে প্রকাশ করতে পারে। আপনি একটি বিষয়বস্তু নিরাপত্তা নীতি ব্যবহার করে এই ট্যাগগুলির ক্রস-অরিজিন রিডিং সীমাবদ্ধ করতে পারেন।
কি একই-উৎস বিবেচনা করা হয়?
একটি মূল স্কিম দ্বারা সংজ্ঞায়িত করা হয় (প্রটোকল হিসাবেও পরিচিত, উদাহরণস্বরূপ HTTP বা HTTPS), পোর্ট (যদি এটি নির্দিষ্ট করা হয়), এবং হোস্ট। যখন তিনটিই দুটি URL-এর জন্য একই হয়, তখন সেগুলি একই-উৎস হিসেবে বিবেচিত হয়। উদাহরণ স্বরূপ, http://www.example.com/foo
হল http ://www.example.com/bar
এর মতই কিন্তু https ://www.example.com/bar
নয় কারণ স্কিমটি আলাদা।
কি অনুমোদিত এবং কি অবরুদ্ধ?
সাধারণত, একটি ক্রস-অরিজিন রিসোর্স এম্বেড করার অনুমতি দেওয়া হয়, যখন ক্রস-অরিজিন রিসোর্স পড়া ব্লক করা হয়।
iframes | ক্রস-অরিজিন এম্বেডিং সাধারণত অনুমোদিত হয় ( X-Frame-Options নির্দেশের উপর নির্ভর করে), কিন্তু ক্রস-অরিজিন রিডিং (যেমন আইফ্রেমে একটি নথি অ্যাক্সেস করতে জাভাস্ক্রিপ্ট ব্যবহার করে) তা নয়। |
সিএসএস | ক্রস-অরিজিন CSS একটি CSS ফাইলে <link> উপাদান বা @import ব্যবহার করে এম্বেড করা যেতে পারে। সঠিক Content-Type হেডার প্রয়োজন হতে পারে। |
ফর্ম | ক্রস-অরিজিন ইউআরএলগুলি ফর্ম উপাদানগুলির action অ্যাট্রিবিউট মান হিসাবে ব্যবহার করা যেতে পারে। একটি ওয়েব অ্যাপ্লিকেশন একটি ক্রস-অরিজিন গন্তব্যে ফর্ম ডেটা লিখতে পারে। |
ছবি | ক্রস-অরিজিন ছবি এম্বেড করার অনুমতি দেওয়া হয়েছে। যাইহোক, ক্রস-অরিজিন ইমেজ ডেটা পড়া (যেমন জাভাস্ক্রিপ্ট ব্যবহার করে ক্রস-অরিজিন ইমেজ থেকে বাইনারি ডেটা পুনরুদ্ধার করা) ব্লক করা হয়েছে। |
মাল্টিমিডিয়া | ক্রস-অরিজিন ভিডিও এবং অডিও <video> এবং <audio> উপাদান ব্যবহার করে এম্বেড করা যেতে পারে। |
লিপি | ক্রস-অরিজিন স্ক্রিপ্ট এমবেড করা যেতে পারে; যাইহোক, কিছু নির্দিষ্ট API-এ অ্যাক্সেস (যেমন ক্রস-অরিজিন আনার অনুরোধ) ব্লক করা হতে পারে। |
TODO: DevSite - চিন্তা করুন এবং মূল্যায়ন পরীক্ষা করুন
কিভাবে ক্লিকজ্যাকিং প্রতিরোধ করবেন
"ক্লিকজ্যাকিং" নামে একটি আক্রমণ একটি iframe
একটি সাইটকে এম্বেড করে এবং স্বচ্ছ বোতামগুলিকে ওভারলে করে যা একটি ভিন্ন গন্তব্যের সাথে লিঙ্ক করে। আক্রমণকারীদের কাছে ডেটা পাঠানোর সময় ব্যবহারকারীরা আপনার অ্যাপ্লিকেশনটি অ্যাক্সেস করছে ভেবে প্রতারিত হয়।
আইফ্রেমে আপনার সাইট এম্বেড করা থেকে অন্য সাইটগুলিকে ব্লক করতে, HTTP শিরোনামে frame-ancestors
নির্দেশিকা সহ একটি বিষয়বস্তু নিরাপত্তা নীতি যোগ করুন।
বিকল্পভাবে, আপনি HTTP হেডারগুলিতে X-Frame-Options
যোগ করতে পারেন বিকল্পগুলির তালিকার জন্য MDN দেখুন।
শেষ করি
আশা করি আপনি কিছুটা স্বস্তি বোধ করছেন যে ব্রাউজারগুলি ওয়েবে নিরাপত্তার দারোয়ান হতে কঠোর পরিশ্রম করে। যদিও ব্রাউজারগুলি সংস্থানগুলিতে অ্যাক্সেস ব্লক করে নিরাপদ থাকার চেষ্টা করে, কখনও কখনও আপনি আপনার অ্যাপ্লিকেশনগুলিতে ক্রস-অরিজিন সংস্থানগুলি অ্যাক্সেস করতে চান৷ পরবর্তী নির্দেশিকায়, ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS) সম্পর্কে জানুন এবং কীভাবে ব্রাউজারকে বলবেন যে বিশ্বস্ত উত্স থেকে ক্রস-অরিজিন রিসোর্স লোড করার অনুমতি রয়েছে।