Content Security Policy¶
Eine Content Security Policy (CSP) ist eine Richtlinie, mit der eine Website festlegt, aus welchen Quellen der Browser Inhalte laden darf. Wenn Ihre Website eine solche Richtlinie sendet, dann lädt der Browser das Widget des Myra EU CAPTCHA nur, wenn die Richtlinie die Adressen des Dienstes ausdrücklich erlaubt.
Erforderliche Freigaben¶
Das Widget verwendet zwei Adressen. Die folgende Tabelle nennt die Direktiven, die diese Adressen enthalten müssen:
| Direktive | Adresse | Wofür |
|---|---|---|
script-src |
https://cdn.eu-captcha.eu |
Lädt die Datei verify.js in die geschützte Seite. |
frame-src |
https://cdn.eu-captcha.eu |
Lädt die Datei check.html in das versteckte Iframe, in dem die Prüfung abläuft. |
connect-src |
https://api.eu-captcha.eu |
Fragt vor der Prüfung einen Wert für das Private-Access-Token-Verfahren ab. Dieses Verfahren unterstützt derzeit nur Safari. |
Note
frame-src ist genauso notwendig wie script-src. Die Datei verify.js erzeugt das Iframe erst zur Laufzeit, deshalb fällt eine fehlende Freigabe nicht beim Einbinden auf, sondern erst im Betrieb.
Beispiel einer Richtlinie¶
Der folgende Header erlaubt dem Browser alles, was das Widget benötigt:
Content-Security-Policy: script-src 'self' https://cdn.eu-captcha.eu; frame-src 'self' https://cdn.eu-captcha.eu; connect-src 'self' https://api.eu-captcha.eu
Die Direktive default-src gilt als Rückfallebene für alle Direktiven, die Ihre Richtlinie nicht einzeln aufführt. Wenn Ihre Richtlinie nur default-src enthält, dann nehmen Sie die beiden Adressen dort auf.
Wirkung einer fehlenden Freigabe¶
Eine fehlende Freigabe wirkt sich je nach Direktive verschieden aus:
| Fehlende Direktive | Wirkung |
|---|---|
script-src |
Der Browser lädt verify.js nicht. Auf der Seite erscheint kein Widget, und das Formular enthält kein Feld eu-captcha-response. |
frame-src |
Die Datei verify.js lädt, das Iframe bleibt jedoch leer. Das Widget erzeugt keinen Token. |
connect-src |
Das Widget arbeitet weiter. In Safari entfällt das Private-Access-Token-Verfahren. |
Warning
Der Browser blockiert die Datei, bevor er die Anfrage sendet. Im Netzwerkbereich der Entwicklerwerkzeuge steht die Anfrage deshalb ohne Statuscode. Dieser Befund sieht wie eine Störung des CDN aus, obwohl der Dienst erreichbar ist und antwortet. Siehe API nicht erreichbar.
Darstellung des Widgets¶
Das Widget setzt seine Größe und die Position des Myra-Logos über Stil-Attribute direkt an den erzeugten Elementen. Wenn Ihre Richtlinie eine Direktive style-src oder style-src-attr ohne den Wert 'unsafe-inline' enthält, dann erscheint das Widget an falscher Stelle oder in falscher Größe. Die Prüfung selbst läuft weiter.
Richtlinie prüfen¶
Um die Richtlinie Ihrer Website zu prüfen, gehen Sie wie folgt vor:
- ► Rufen Sie die geschützte Seite in einem Browser auf.
- ► Öffnen Sie die Entwicklerwerkzeuge des Browsers.
- ► Prüfen Sie in der Konsole, ob eine Meldung eine der drei Adressen nennt.
- ► Prüfen Sie in der Netzwerkanalyse den Antwortheader
Content-Security-Policyder Seite. - ➔ Die Meldungen der Konsole nennen die Direktive, die den Zugriff verweigert hat.
Note
Eine Richtlinie steht entweder im Antwortheader Content-Security-Policy oder in einem Element <meta http-equiv="Content-Security-Policy"> im Bereich <head> der Seite. Beide Formen wirken zusammen: Der Browser wendet jede Richtlinie einzeln an, und die Freigabe muss deshalb in jeder von ihnen stehen.
Siehe Widget wird nicht erkannt und Funktionsweise.