Polityka Content Security Policy (CSP) to sposób na zabezpieczenie strony internetowej poprzez ograniczenie zasobów i skryptów, które mogą być wczytywane i wykonywane. Możesz włączyć CSP, ustawiając nagłówek Content-Security-Policy
w odpowiedziach HTTP z Twojego serwera WWW.
CSP można skonfigurować na 2 standardowe sposoby:
Określ listę dozwolonych domen, które mogą wstrzykiwać swoje zasoby na stronie.
Określ losowy identyfikator, którym muszą być oznaczone zasoby na stronie, aby mogły się wczytać. Takie podejście nazywa się ścisłym CSP.
Domeny, których używa tag wydawcy Google (GPT), zmieniają się z czasem, dlatego obsługujemy tylko ścisłe reguły CSP (opcja 2). Dzięki temu nie musisz utrzymywać bieżącej listy domen, które mogą się zdezaktualizować i uszkodzić witrynę.
Konfigurowanie CSP za pomocą tagów wydawcy Google
Włącz CSP na serwerze WWW.
Wykonaj czynności opisane w artykule Wdrożenie rygorystycznego CSP, aby skonfigurować nagłówek CSP i zastosować identyfikator nonce do każdego tagu skryptu na stronie, w tym do tagu
gpt.js
. GPT obsługuje te dyrektywy CSP:Content-Security-Policy: object-src 'none'; script-src 'nonce-{random}' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:; base-uri 'none'; report-uri https://your-report-collector.example.com/
Jeśli zasada jest odpowiednia do Twojego przypadku użycia, możesz wybrać bardziej liberalną zasadę. Zasady bardziej restrykcyjne mogą zostać złamane bez powiadomienia.
Włącz renderowanie w wielu domenach.
Elementy iframe reklam mogą wczytywać zasoby zewnętrzne, które mogą nie być dozwolone przez CSP. Elementy iframe w tej samej domenie dziedziczą reguły CSP okna najwyższego poziomu, a GPT nie może kontrolować zawartości kreacji, dlatego kreacje w tej samej domenie zwykle nie działają prawidłowo z nagłówkami CSP.
Aby umożliwić renderowanie wszystkich kreacji w różnych domenach, przed załadowaniem dowolnego miejsca na reklamę wykonaj polecenie
googletag.pubads().setForceSafeFrame(true)
.<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Hello GPT</title>
<script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" nonce="KC7tcz53FHqumKP1" async></script>
<script nonce="KC7tcz53FHqumKP1">
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.pubads().setForceSafeFrame(true);
});
</script>
</head>
Testowanie
Zalecamy najpierw przetestowanie zasad, ustawiając nagłówek Content-Security-Policy-Report-Only
zamiast Content-Security-Policy
. Nagłówek zgłasza naruszenia, ale nadal zezwala na ich wyświetlanie na stronie.