Content Security Policy және CMP: CSP мен келісімді бірге жұмыс істету

Келісуі тиіс екі қауіпсіздік қабаты

Content Security Policy (CSP) браузерге бет скрипттерді, стильдерді, суреттерді, фреймдерді және желі сұрауларын қай көздерден жүктей алатынын айтады. Келісімді басқару платформасы керісінше іс атқарады: пайдаланушы таңдауына қарай осы скрипттердің қайсысының жұмыс істеуіне рұқсат етілетінін шешеді. Екеуі бөлек конфигурацияланғанда, олар қақтығысады. CSP бұғаттағандықтан CMP жүктелмейді немесе CSP CMP мен жарнама тегтерін сыйғызу үшін соншалықты босатылады, ол енді ештеңені қорғамайды.

Бұл нұсқаулық CMP әдетте қандай CSP директиваларын қажет ететінін, nonce-тардың скрипт инъекциясымен қалай әрекеттесетінін және баннерді бұзбай өзгерістерді қалай енгізуді түсіндіреді.

CMP CSP-ден әдетте нені қажет етеді

Нақты талаптар жеткізушіге байланысты, сондықтан әрқашан CMP-іңіздің өз құжаттамасынан бастаңыз. Жалпы алғанда, мына директиваларды тексеріңіз:

TCF сайттарында CMP бетте __tcfapiLocator атты locator фреймін де жасайтынын есте ұстаңыз. Бұл фрейм қашықтағы көзсіз жасалады, сондықтан әдетте frame-src жазбасын қажет етпейді, бірақ тестілеу кезінде растауға тұрарлық.

Инлайн stub мәселесі

Көптеген CMP-лер басқа скрипттер негізгі CMP жүктелмес бұрын шақыруларды кезекке қоя алуы үшін бет тақырыбына шағын инлайн скрипт — stub — орналастыруды сұрайды. Қатаң CSP сіз нақты рұқсат бермейінше инлайн скрипттерді бұғаттайды. Сізде үш нұсқа бар:

  1. Nonce. Әр жауап үшін кездейсоқ мән жасаңыз, оны CSP тақырыбына 'nonce-...' ретінде және stub-тың <script> тегіне қосыңыз. Динамикалық беттер үшін ең икемді нұсқа.
  2. Хэш. Stub-тың нақты мазмұнының SHA-256 хэшін script-src мәніне қосыңыз. Статикалық сайттар үшін жақсы жұмыс істейді, бірақ stub-тағы кез келген өзгеріс, тіпті бос орын да, оны бұзады.
  3. Stub-ты өз доменіңізде сыртқы файл ретінде орналастыру және 'self' арқылы қамту. Оның жеткілікті ерте жүктелуін қамтамасыз ету мұқияттылықты қажет етеді.

Жолды қысқарту ретінде 'unsafe-inline' мәнінен аулақ болыңыз. Ол әр инлайн скриптке рұқсат береді және бұл CSP беретін қорғаныстың көп бөлігін жояды.

Nonce-тар және CMP енгізетін скрипттер

Келісімге дейін скрипттерді бұғаттайтын CMP көбіне оларды ұстап тұрып, кейін енгізу арқылы жұмыс істейді. Nonce негізіндегі CSP кезінде бұл енгізілген скрипттерге де рұқсат берілуі керек. Екі кең таралған тәсіл бар:

Тег менеджерлері де дәл осы сұрақты қояды. Егер жарнама және аналитика тегтерін тег менеджері арқылы жүктесеңіз, оның nonce-тар жөніндегі құжаттамасын орындаңыз және CMP мен тег менеджері бірыңғай тәсілді қолданатынына көз жеткізіңіз.

Жарнама тегтері CSP-ді қиындатады

Бағдарламалық жарнама көптеген домендерден скрипттер мен фреймдерді жүктейді және тізім сұраныс серіктестері өзгерген сайын өзгереді. Баспагерлер әдетте екі таңдаудың бірін жасайды:

Қалай болғанда да, CSP өзгерісі баннерді үнсіз өшіріп тастамауы үшін CMP тек үлгі таңбамен емес, нақты рұқсат тізімінде болуы керек.

Report-only режимінде енгізіңіз

Алдымен Content-Security-Policy-Report-Only тақырыбын қолданыңыз. Браузер ештеңені бұғаттамай бұзушылықтар туралы хабарлайды, сонда жаңа саясат нені бұзатынын көре аласыз.

  1. Саясатты есеп беру түйінімен report-only режимінде орналастырыңыз.
  2. Беттерді таза браузер профильдерінде жүктеңіз және келісімнің бүкіл ағынынан өтіңіз: бірінші келу, барлығын қабылдау, барлығынан бас тарту, арнайы таңдау, қайтарып алу.
  3. Бұғатталған CMP ресурстары үшін бұзушылық есептерін және браузер консолін қарап шығыңыз.
  4. Саясатты түзетіңіз, содан кейін мәжбүрлі қолдануға көшіңіз.
  5. Регрессияларды ұстау үшін мәжбүрлі қолданудан кейін де есеп беруді қосулы ұстаңыз.

CSP қақтығысының белгілері

Негізгі қорытындылар

← Блaderegistrdelays delays Барлығын оқу →