Content Security Policy ও আপনার CMP: CSP আর সম্মতিকে একসঙ্গে কাজ করানো

দুটি নিরাপত্তা স্তর যাদের একমত হতে হবে

Content Security Policy (CSP) ব্রাউজারকে জানায় একটি পেজ কোন উৎস থেকে স্ক্রিপ্ট, স্টাইল, ছবি, ফ্রেম ও নেটওয়ার্ক অনুরোধ লোড করতে পারবে। সম্মতি ব্যবস্থাপনা প্ল্যাটফর্ম করে এর উল্টো কাজ: ব্যবহারকারীর পছন্দের ভিত্তিতে ঠিক করে সেই স্ক্রিপ্টগুলোর মধ্যে কোনটি চলতে পারবে। দুটি আলাদাভাবে কনফিগার করা হলে সংঘাত বাধে। CSP আটকে দেওয়ায় CMP লোড হয় না, অথবা CMP ও বিজ্ঞাপন ট্যাগ মানিয়ে নিতে CSP এত শিথিল করা হয় যে তা আর কিছুই রক্ষা করে না।

এই গাইডে ব্যাখ্যা করা হয়েছে একটি CMP-র সাধারণত কোন CSP ডিরেক্টিভ লাগে, স্ক্রিপ্ট ইনজেকশনের সঙ্গে ননস কীভাবে কাজ করে, এবং ব্যানার না ভেঙে পরিবর্তন কীভাবে রোলআউট করবেন।

CMP সাধারণত CSP থেকে কী চায়

সুনির্দিষ্ট প্রয়োজন ভেন্ডরভেদে আলাদা, তাই সবসময় আপনার CMP-র নিজস্ব ডকুমেন্টেশন থেকে শুরু করুন। সাধারণভাবে এই ডিরেক্টিভগুলো দেখুন:

TCF সাইটে মনে রাখুন, CMP পেজে __tcfapiLocator নামে একটি লোকেটার ফ্রেমও তৈরি করে। সেই ফ্রেম দূরবর্তী উৎস ছাড়াই তৈরি হয়, তাই সাধারণত তার জন্য frame-src এন্ট্রি লাগে না, তবু পরীক্ষায় তা নিশ্চিত করা ভালো।

ইনলাইন স্টাবের সমস্যা

বেশির ভাগ CMP আপনাকে পেজের হেডে একটি ছোট ইনলাইন স্ক্রিপ্ট — স্টাব — বসাতে বলে, যাতে মূল CMP লোড হওয়ার আগে অন্য স্ক্রিপ্ট কল কিউতে রাখতে পারে। কঠোর CSP স্পষ্টভাবে অনুমতি না দিলে ইনলাইন স্ক্রিপ্ট আটকে দেয়। আপনার তিনটি বিকল্প:

  1. ননস। প্রতিটি রেসপন্সের জন্য একটি এলোমেলো মান তৈরি করে CSP হেডারে 'nonce-...' হিসেবে এবং স্টাবের <script> ট্যাগে যোগ করুন। গতিশীল পেজের জন্য এটি সবচেয়ে নমনীয় বিকল্প।
  2. হ্যাশ। স্টাবের হুবহু বিষয়বস্তুর SHA-256 হ্যাশ script-src-এ যোগ করুন। স্ট্যাটিক সাইটে এটি ভালো কাজ করে, কিন্তু স্টাবে যেকোনো পরিবর্তন, এমনকি ফাঁকা জায়গা, এটি ভেঙে দেয়।
  3. স্টাব নিজে হোস্ট করা, নিজের ডোমেনে বাহ্যিক ফাইল হিসেবে, যা 'self'-এর আওতায় পড়ে। যথেষ্ট আগে লোড হচ্ছে তা নিশ্চিত করতে এতে যত্ন লাগে।

শর্টকাট হিসেবে 'unsafe-inline' এড়িয়ে চলুন। এটি প্রতিটি ইনলাইন স্ক্রিপ্টকে অনুমতি দেয়, ফলে CSP যে সুরক্ষা দেয় তার বড় অংশ চলে যায়।

ননস এবং CMP-র ইনজেক্ট করা স্ক্রিপ্ট

যে CMP সম্মতি না পাওয়া পর্যন্ত স্ক্রিপ্ট আটকে রাখে, সে প্রায়ই সেগুলো ধরে রেখে পরে ইনজেক্ট করার মাধ্যমে কাজ করে। ননসভিত্তিক CSP-তে সেই ইনজেক্ট করা স্ক্রিপ্টগুলোকেও অনুমতি দিতে হয়। দুটি প্রচলিত পদ্ধতি:

ট্যাগ ম্যানেজারও একই প্রশ্ন তোলে। বিজ্ঞাপন ও অ্যানালিটিক্স ট্যাগ ট্যাগ ম্যানেজার দিয়ে লোড করলে ননস নিয়ে তার ডকুমেন্টেশন অনুসরণ করুন এবং নিশ্চিত করুন CMP ও ট্যাগ ম্যানেজার একই পদ্ধতি ব্যবহার করছে।

বিজ্ঞাপন ট্যাগ CSP-কে কঠিন করে

প্রোগ্রামেটিক বিজ্ঞাপন বহু ডোমেন থেকে স্ক্রিপ্ট ও ফ্রেম লোড করে, এবং ডিমান্ড পার্টনার বদলালে তালিকা বদলায়। প্রকাশকরা সাধারণত দুটির একটি বেছে নেন:

যেটিই হোক, CMP স্পষ্ট অনুমতি তালিকায় থাকা উচিত, শুধু ওয়াইল্ডকার্ডের আওতায় নয়, যাতে CSP-র কোনো পরিবর্তন নিঃশব্দে ব্যানার অক্ষম করে না দেয়।

রিপোর্ট-অনলি মোডে রোলআউট করুন

প্রথমে Content-Security-Policy-Report-Only হেডার ব্যবহার করুন। ব্রাউজার কিছু না আটকে লঙ্ঘন রিপোর্ট করে, ফলে নতুন নীতি কী ভাঙবে তা আপনি দেখতে পারেন।

  1. রিপোর্টিং এন্ডপয়েন্ট সহ নীতিটি রিপোর্ট-অনলি মোডে ডিপ্লয় করুন।
  2. পরিষ্কার ব্রাউজার প্রোফাইলে পেজ লোড করে পূর্ণ সম্মতি প্রবাহ চালান: প্রথম ভিজিট, সব গ্রহণ, সব প্রত্যাখ্যান, কাস্টম পছন্দ, প্রত্যাহার।
  3. লঙ্ঘনের রিপোর্ট এবং ব্রাউজার কনসোলে আটকে যাওয়া CMP রিসোর্স দেখুন।
  4. নীতি সমন্বয় করুন, তারপর বলবৎ মোডে যান।
  5. বলবৎ করার পরও রিপোর্টিং চালু রাখুন যাতে রিগ্রেশন ধরা পড়ে।

CSP সংঘাতের লক্ষণ

মূল বিষয়গুলো

← ব্লaderegistrdelays delays সবগুলো পড়ুন →