Content Security Policy və CMP-niz: CSP ilə Razılığı Birlikdə İşlətmək

Razılaşmalı olan iki təhlükəsizlik qatı

Content Security Policy (CSP) brauzerə səhifənin skriptləri, stilləri, şəkilləri, frame-ləri və şəbəkə sorğularını hansı mənbələrdən yükləyə biləcəyini bildirir. Razılığın idarə edilməsi platforması əks işi görür: istifadəçinin seçiminə əsasən həmin skriptlərdən hansının işləməsinə icazə verildiyini müəyyən edir. İkisi ayrı-ayrılıqda konfiqurasiya edildikdə toqquşurlar. CMP yüklənmir, çünki CSP onu bloklayır, ya da CSP CMP və reklam teqlərinə yer açmaq üçün o qədər boşaldılır ki, artıq heç nəyi qorumur.

Bu bələdçi CMP-nin adətən hansı CSP direktivlərinə ehtiyac duyduğunu, nonce-ların skript inyeksiyası ilə necə qarşılıqlı əlaqədə olduğunu və banneri pozmadan dəyişiklikləri necə tətbiq edəcəyinizi izah edir.

CMP adətən CSP-dən nə tələb edir

Dəqiq tələblər vendordan asılıdır, ona görə həmişə öz CMP-nizin sənədlərindən başlayın. Ümumiyyətlə, bu direktivləri yoxlayın:

TCF saytlarında CMP-nin səhifədə __tcfapiLocator adlı locator frame yaratdığını da yadda saxlayın. Həmin frame uzaq mənbə olmadan yaradılır, ona görə də adətən frame-src girişi tələb etmir, lakin sınaqda təsdiqləməyə dəyər.

Inline stub problemi

Əksər CMP-lər səhifənin head-ində kiçik inline skript — stub — yerləşdirməyi xahiş edir ki, digər skriptlər əsas CMP yüklənməzdən əvvəl çağırışları növbəyə qoya bilsin. Sərt CSP açıq şəkildə icazə verməsəniz, inline skriptləri bloklayır. Üç variantınız var:

  1. Nonce. Hər cavab üçün təsadüfi dəyər yaradın, onu CSP başlığına 'nonce-...' kimi və stub-ın <script> teqinə əlavə edin. Bu, dinamik səhifələr üçün ən çevik variantdır.
  2. Hash. Stub-ın dəqiq məzmununun SHA-256 hash-ini script-src-ə əlavə edin. Bu, statik saytlar üçün yaxşı işləyir, lakin stub-da hər dəyişiklik, hətta boşluq da onu pozur.
  3. Stub-ı özünüz host etmək öz domeninizdə 'self' ilə əhatə olunan xarici fayl kimi. Kifayət qədər erkən yüklənməsini təmin etmək üçün diqqət tələb edir.

Qısa yol kimi 'unsafe-inline'-dan çəkinin. O, hər inline skripti icazəli edir, bu da CSP-nin təmin etdiyi qorumanın böyük hissəsini aradan qaldırır.

Nonce-lar və CMP-nin inyeksiya etdiyi skriptlər

Razılığa qədər skriptləri bloklayan CMP çox vaxt onları saxlayıb sonra inyeksiya etməklə işləyir. Nonce əsaslı CSP altında bu inyeksiya edilmiş skriptlərə də icazə verilməlidir. İki ümumi yanaşma var:

Teq menecerləri eyni sualı qaldırır. Reklam və analitika teqlərini teq meneceri ilə yükləyirsinizsə, onun nonce sənədlərinə əməl edin və CMP ilə teq menecerinin ardıcıl yanaşma işlətdiyinə əmin olun.

Reklam teqləri CSP-ni çətinləşdirir

Proqramatik reklam çoxlu domenlərdən skript və frame yükləyir və tələb tərəfdaşları dəyişdikcə siyahı dəyişir. Naşirlər adətən iki seçimdən birini edir:

Hər iki halda CMP yalnız wildcard ilə əhatə olunmaq əvəzinə açıq icazə siyahısında olmalıdır ki, CSP dəyişikliyi banneri səssizcə söndürməsin.

Report-Only rejimi ilə tətbiq edin

Əvvəlcə Content-Security-Policy-Report-Only başlığından istifadə edin. Brauzer heç nəyi bloklamadan pozuntuları bildirir, belə ki, yeni siyasətin nəyi poza biləcəyini görə bilərsiniz.

  1. Siyasəti report-only rejimində hesabat endpointi ilə yerləşdirin.
  2. Səhifələri təmiz brauzer profillərində yükləyin və tam razılıq axınından keçin: ilk ziyarət, hamısını qəbul et, hamısını rədd et, fərdi seçim, geri götürmə.
  3. Bloklanmış CMP resursları üçün pozuntu hesabatlarına və brauzer konsoluna baxın.
  4. Siyasəti tənzimləyin, sonra icra rejiminə keçin.
  5. Reqressiyaları tutmaq üçün icradan sonra da hesabatı aktiv saxlayın.

CSP konfliktinin əlamətləri

Əsas nəticələr

← Bloq Hamısını Oxu →