کنٹینٹ سیکیورٹی پالیسی اور آپ کا CMP: CSP اور رضامندی کو ساتھ چلانا

دو سیکیورٹی تہیں جنہیں ہم آہنگ ہونا ہے

کنٹینٹ سیکیورٹی پالیسی (CSP) براؤزر کو بتاتی ہے کہ کوئی صفحہ کن ذرائع سے اسکرپٹس، اسٹائلز، تصاویر، فریمز اور نیٹ ورک درخواستیں لوڈ کر سکتا ہے۔ رضامندی کے انتظام کا پلیٹ فارم اس کے برعکس کام کرتا ہے: وہ صارف کے انتخاب کی بنیاد پر طے کرتا ہے کہ ان میں سے کن اسکرپٹس کو چلنے کی اجازت ہے۔ جب دونوں الگ الگ ترتیب دیے جائیں تو ٹکراتے ہیں۔ یا تو CMP لوڈ نہیں ہوتا کیونکہ CSP اسے بلاک کر دیتی ہے، یا CSP کو CMP اور اشتہاری ٹیگز کی گنجائش کے لیے اتنا ڈھیلا کر دیا جاتا ہے کہ وہ کسی چیز کی حفاظت ہی نہیں کرتی۔

یہ گائیڈ بتاتی ہے کہ CMP کو عموماً کن CSP ڈائریکٹوز کی ضرورت ہوتی ہے، nonces اسکرپٹ انجیکشن کے ساتھ کیسے تعامل کرتے ہیں، اور بینر کو توڑے بغیر تبدیلیاں کیسے رول آؤٹ کی جائیں۔

CMP کو عموماً CSP سے کیا چاہیے

عین تقاضے وینڈر پر منحصر ہیں، اس لیے ہمیشہ اپنے CMP کی دستاویزات سے آغاز کریں۔ عمومی طور پر ان ڈائریکٹوز کو چیک کریں:

TCF سائٹس پر یاد رکھیں کہ CMP صفحے پر __tcfapiLocator نام کا ایک لوکیٹر فریم بھی بناتا ہے۔ یہ فریم بغیر ریموٹ سورس کے بنتا ہے، اس لیے عام طور پر اسے frame-src اندراج کی ضرورت نہیں ہوتی، لیکن ٹیسٹنگ میں تصدیق کر لینا مناسب ہے۔

ان لائن اسٹب کا مسئلہ

زیادہ تر CMPs آپ سے کہتے ہیں کہ صفحے کے head میں ایک چھوٹا ان لائن اسکرپٹ — اسٹب — رکھیں، تاکہ مرکزی CMP لوڈ ہونے سے پہلے دوسرے اسکرپٹس کالز کو قطار میں رکھ سکیں۔ سخت CSP ان لائن اسکرپٹس کو بلاک کرتی ہے جب تک آپ صراحت سے اجازت نہ دیں۔ آپ کے پاس تین راستے ہیں:

  1. nonce۔ ہر جواب کے لیے ایک بے ترتیب قدر بنائیں، اسے 'nonce-...' کی صورت میں CSP ہیڈر میں اور اسٹب کے <script> ٹیگ میں شامل کریں۔ متحرک صفحات کے لیے یہ سب سے لچکدار راستہ ہے۔
  2. ہیش۔ اسٹب کے عین مواد کا SHA-256 ہیش script-src میں شامل کریں۔ یہ جامد سائٹس کے لیے اچھا کام کرتا ہے، لیکن اسٹب میں کوئی بھی تبدیلی، حتیٰ کہ خالی جگہ، اسے توڑ دیتی ہے۔
  3. اسٹب کی خود میزبانی اپنے ڈومین پر بیرونی فائل کے طور پر، جو 'self' سے ڈھکی ہو۔ اس کے لیے احتیاط چاہیے تاکہ وہ کافی جلدی لوڈ ہو۔

شارٹ کٹ کے طور پر 'unsafe-inline' سے بچیں۔ یہ ہر ان لائن اسکرپٹ کی اجازت دیتا ہے، جو CSP کی فراہم کردہ زیادہ تر حفاظت ختم کر دیتا ہے۔

Nonces اور وہ اسکرپٹس جو CMP انجیکٹ کرتا ہے

جو CMP رضامندی تک اسکرپٹس کو بلاک کرتا ہے وہ اکثر انہیں روک کر بعد میں انجیکٹ کرنے سے کام کرتا ہے۔ nonce پر مبنی CSP میں ان انجیکٹ شدہ اسکرپٹس کو بھی اجازت دینی ہوگی۔ دو عام طریقے ہیں:

ٹیگ مینیجرز بھی یہی سوال اٹھاتے ہیں۔ اگر آپ اشتہاری اور اینالیٹکس ٹیگز ٹیگ مینیجر کے ذریعے لوڈ کرتے ہیں تو nonces پر اس کی دستاویزات کی پیروی کریں اور یقینی بنائیں کہ CMP اور ٹیگ مینیجر یکساں طریقہ اپناتے ہیں۔

اشتہاری ٹیگز CSP کو مشکل بناتے ہیں

پروگرامیٹک اشتہارات کئی ڈومینز سے اسکرپٹس اور فریمز لوڈ کرتے ہیں، اور ڈیمانڈ پارٹنرز بدلنے کے ساتھ فہرست بدلتی ہے۔ ناشرین عموماً دو میں سے ایک انتخاب کرتے ہیں:

دونوں صورتوں میں CMP کو صریح اجازت فہرست میں ہونا چاہیے، صرف وائلڈ کارڈ کے ذریعے نہیں، تاکہ CSP کی کوئی تبدیلی خاموشی سے بینر کو غیر فعال نہ کر دے۔

Report-Only موڈ کے ساتھ رول آؤٹ کریں

پہلے Content-Security-Policy-Report-Only ہیڈر استعمال کریں۔ براؤزر کچھ بلاک کیے بغیر خلاف ورزیاں رپورٹ کرتا ہے، تاکہ آپ دیکھ سکیں کہ نئی پالیسی کیا توڑے گی۔

  1. پالیسی کو report-only موڈ میں رپورٹنگ اینڈ پوائنٹ کے ساتھ تعینات کریں۔
  2. صاف براؤزر پروفائلز میں صفحات لوڈ کریں اور رضامندی کا پورا بہاؤ چلائیں: پہلی وزٹ، سب قبول کریں، سب مسترد کریں، حسب ضرورت انتخاب، رضامندی واپس لینا۔
  3. بلاک شدہ CMP وسائل کے لیے خلاف ورزی کی رپورٹس اور براؤزر کنسول کا جائزہ لیں۔
  4. پالیسی ایڈجسٹ کریں، پھر نفاذ پر جائیں۔
  5. پسپائی پکڑنے کے لیے نفاذ کے بعد بھی رپورٹنگ فعال رکھیں۔

CSP تصادم کی علامات

اہم نکات

← بdelays delays سب پڑھیں →