Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

CSP: "Die Seiteneinstellungen haben das Laden einer Ressource auf self festgestellt"

477 views
Skip to first unread message

Harald Effenberg

unread,
Aug 30, 2016, 1:41:34 PM8/30/16
to
Hi!

Kann mir jemand erklären, warum die Konsole meines Firefox' (48.0.2)
mir beim Aufruf von https://www.effenberg.de/ die folgende Fehlermeldung
anzeigt?

| Content Security Policy: Die Seiteneinstellungen haben das Laden einer
| Ressource auf self festgestellt ("script-src https://www.effenberg.de
| https://code.jquery.com https://ajax.googleapis.com https://*.google.com
| https://pagead2.googlesyndication.com"). Ein CSP-Bericht wird gesendet.

Was ist gegen das Laden eines Skriptes von 'self' zu sagen?
Besonders, da im CSP-Header
script-src 'self'
steht?

Hier noch die ausführliche Version:

{"csp-report":
{
"blocked-uri":"self",
"document-uri":"https://www.effenberg.de/",
"line-number":1,
"original-policy":"default-src https://www.effenberg.de https://*.google.com https://googleads.g.doubleclick.net; style-src
https://www.effenberg.de https://fonts.googleapis.com 'unsafe-inline'; script-src https://www.effenberg.de https://code.jquery.com
https://ajax.googleapis.com https://*.google.com https://pagead2.googlesyndication.com; child-src
https://googleads.g.doubleclick.net https://*.google.com; img-src https://www.effenberg.de https://*.google.com
https://*.googleapis.com https://*.gstatic.com; font-src https://www.effenberg.de https://fonts.gstatic.com; report-uri
https://www.effenberg.de/csp-report.php",
"referrer":"",
"script-sample":"(function () {\n\n var event_id = docum...",
"source-file":"https://www.effenberg.de/",
"violated-directive":"script-src https://www.effenberg.de https://code.jquery.com https://ajax.googleapis.com https://*.google.com
https://pagead2.googlesyndication.com"
}
}

Was ist das für ein "script-sample"? Auf meiner Seite finde ich es nirgends.

ANFSCD:
https://www.effenberg.de/csp-report.php hat wunderbar funktioniert und alle
Violations in die Datei csp-report.txt eingetragen. Dann habe ich
mir einen Kaffee geholt und mein Editor ist abgestürzt und seit dem
werden auf csp-report.txt scheinbar nur noch sehr gelegentlich Einträge
vorgenommen. Bisher immer nur durch Apple-Browser. Ich habe keinen,
daher kann ich meine Seiten nicht weiter testen und muss warten,
bis irgend ein Apple-User eine davon aufruft.

Leider habe ich nicht die geringste Ahnung von php, deshalb ist mir dieses
Verhalten völlig rätselhaft.
Hätte ich mir doch bloß den Kaffee nicht geholt...

Hier die Code-Zeilen von csp-report.php:

<?php
$browser = $_SERVER['HTTP_USER_AGENT'];
http_response_code(204);
$data = file_get_contents('php://input');
if ($data = json_decode($data)) {
$data = json_encode(
$data,
JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
);
$datei = fopen("csp-report.txt", "a");
fwrite ($datei, "\r\n");
fwrite ($datei, $browser);
fwrite ($datei, "\r\n");
fwrite($datei, $data);
fclose($datei);
}
?>

Ich würde mich sehr freuen, wenn mir jemand helfen könnte.

Viele Grüße
Harald
--
"Unter aller Sau"
- Effenberg führt durch die bunte Welt der Witze
am Samstag, 01.10.2016 um 19:30 im "Kabarett Obelisk"
https://www.effenberg.de/witze.htm

Thomas 'PointedEars' Lahn

unread,
Aug 30, 2016, 5:29:28 PM8/30/16
to
Harald Effenberg wrote:

> Kann mir jemand erklären, warum die Konsole meines Firefox' (48.0.2)
> mir beim Aufruf von https://www.effenberg.de/ die folgende Fehlermeldung
> anzeigt?

Bestimmt.

> | Content Security Policy: Die Seiteneinstellungen haben das Laden einer
> | Ressource auf self festgestellt ("script-src https://www.effenberg.de
> | https://code.jquery.com https://ajax.googleapis.com https://*.google.com
> | https://pagead2.googlesyndication.com"). Ein CSP-Bericht wird gesendet.

Sicher, dass das eine Fehlermeldung ist?

> Was ist gegen das Laden eines Skriptes von 'self' zu sagen?

Nichts.

> Besonders, da im CSP-Header

_Headerfeld_

> script-src 'self'
> steht?

Mein Iceweasel 38.1.0 bemängelt auf <https://www.effenberg.de/> nur

| Content Security Policy: Couldn't process unknown directive 'child-src'

Das könnte aber daran liegen, dass er älter als Dein Firefox 48.0.2 ist.

> Hier noch die ausführliche Version:
>
> {"csp-report":
> {
> […]
> "script-sample":"(function () {\n\n var event_id = docum...",
> "source-file":"https://www.effenberg.de/",
> "violated-directive":"script-src https://www.effenberg.de
> https://code.jquery.com https://ajax.googleapis.com https://*.google.com
> https://pagead2.googlesyndication.com" }
> }
>
> Was ist das für ein "script-sample"? Auf meiner Seite finde ich es
> nirgends.

Weiss ich nicht. Ich auch nicht, auch nicht auszugsweise (mit Ctrl+Shift+F
in den DevTools). RTFSpec, STFW.

> ANFSCD:

WTF?

> https://www.effenberg.de/csp-report.php hat wunderbar funktioniert und
> alle Violations in die Datei csp-report.txt eingetragen. Dann habe ich
> mir einen Kaffee geholt und mein Editor ist abgestürzt und seit dem
> werden auf csp-report.txt scheinbar nur noch sehr gelegentlich Einträge
> vorgenommen.

Cum hoc vel post hoc non est propter hoc.

> Bisher immer nur durch Apple-Browser.

Wie kommst Du darauf?

Und was erwartest Du? Dass Browser das Script von sich aus finden, weil Du
es anbietest?

> Ich habe keinen, daher kann ich meine Seiten nicht weiter testen und muss
> warten, bis irgend ein Apple-User eine davon aufruft.

<http://browserstack.com/>

> Leider habe ich nicht die geringste Ahnung von php, deshalb ist mir dieses
> Verhalten völlig rätselhaft.

Weshalb führst Du Programme auf Deinem Server aus, bei denen Du „nicht die
geringste Ahnung“ hast, was sie tun – ausser, dass sie *offensichtlich das
Dateisystem Deines Servers verändern*? Ist das nicht ein bisschen, hm,
*GROB* *FAHRLÄSSIG??'*

> Hätte ich mir doch bloß den Kaffee nicht geholt...

Hättest Du mal mehr Kaffee getrunken, bevor Du so einen Quatsch machst.
Wahlweise auch Tee.

> Hier die Code-Zeilen von csp-report.php:
>
> <?php
> $browser = $_SERVER['HTTP_USER_AGENT'];
> http_response_code(204);
> $data = file_get_contents('php://input');
> if ($data = json_decode($data)) {
> $data = json_encode(
> $data,
> JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
> );
> $datei = fopen("csp-report.txt", "a");
> fwrite ($datei, "\r\n");
> fwrite ($datei, $browser);
> fwrite ($datei, "\r\n");
> fwrite($datei, $data);
> fclose($datei);
> }
> ?>

Das “?>” am Ende würde ich weglassen, damit nicht versehentlich Whitespace
generiert wird. Ansonsten könnte ich Dir zwar jede Zeile einzeln erklären,
aber erstens ist das hier off-topic, und zweitens so wenig komplex, dass die
angemessene Antwort lautet: RTFFAQ, RTFM, STFW.


kopfschüttelnd,

PointedEars
--
"Use any version of Microsoft Frontpage to create your site.
(This won't prevent people from viewing your source, but no
one will want to steal it.)" -- Tipp gegen Quellcode-Klau,
<http://www.vortex-webdesign.com/help/hidesource.htm>

Harald Effenberg

unread,
Aug 30, 2016, 8:23:18 PM8/30/16
to
"Thomas 'PointedEars' Lahn" <Point...@web.de> schrieb:
> Harald Effenberg wrote:
>
>> Kann mir jemand erklären, warum die Konsole meines Firefox' (48.0.2)
>> mir beim Aufruf von https://www.effenberg.de/ die folgende Fehlermeldung
>> anzeigt?
>
> Bestimmt.

Okay. Dann mal los. :-)
>
>> | Content Security Policy: Die Seiteneinstellungen haben das Laden einer
>> | Ressource auf self festgestellt ("script-src https://www.effenberg.de
>> | https://code.jquery.com https://ajax.googleapis.com https://*.google.com
>> | https://pagead2.googlesyndication.com"). Ein CSP-Bericht wird gesendet.
>
> Sicher, dass das eine Fehlermeldung ist?

Dann halt eine Verletzung der Policy. Jedenfalls meint der Browser doch scheinbar,
dass da etwas auf der Seite über die im Headerfeld (danke) genannten Freigaben
hinausgeht und er die Verarbeitung verweigern würde, wenn das Headerfeld mit
"Content-Security-Policy" statt mit "Content-Security-Policy-Report-Only"
betitelt wäre. Wozu schickt der sonst den Bericht?

> Mein Iceweasel 38.1.0 bemängelt auf <https://www.effenberg.de/> nur
>
> | Content Security Policy: Couldn't process unknown directive 'child-src'
>
> Das könnte aber daran liegen, dass er älter als Dein Firefox 48.0.2 ist.

Yep. Dein Iceweasel kennt es vermutlich noch als "frame-src".

>> ANFSCD:
>
> WTF?

https://www.google.de/?#q=ANFSCD&gfe_rd=cr

>> https://www.effenberg.de/csp-report.php hat wunderbar funktioniert und
>> alle Violations in die Datei csp-report.txt eingetragen. Dann habe ich
>> mir einen Kaffee geholt und mein Editor ist abgestürzt und seit dem
>> werden auf csp-report.txt scheinbar nur noch sehr gelegentlich Einträge
>> vorgenommen.
>
> Cum hoc vel post hoc non est propter hoc.

Klar, der Kaffee wird's nicht gewesen sein. Aber da sich das Verhalten des Programms
nach dem Absturz meines Editors so radikal verändert hat, vermutete ich eben,
dass dabei irgendetwas an der Datei verändert wurde. Obwohl ich keine Idee habe, was
das sein könnte.

>> Bisher immer nur durch Apple-Browser.
>
> Wie kommst Du darauf?

Wegen der User-Agents. Das waren heute nachmittag noch nur Apple-Browser:

Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G35
Safari/601.1

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.4.4 (KHTML, like Gecko)

Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143
Safari/601.1

Mittlerweile sind allerdings auch Chrome-Browser dabei. Aber kein einziger
Firefox. Und kein Windows-Rechner.

> Und was erwartest Du? Dass Browser das Script von sich aus finden, weil Du
> es anbietest?

Ja. Manchmal geht halt jemand auf eine meiner Seiten. Und falls sein Browser eine
"Violation" findet, schickt der einen Bericht. Auch, wenn es ein Firefox ist. Aber
deren Berichte kommen seit heute mittag nicht mehr bei mir an.
Würde der Server sie nicht annehmen, müsste die Firefox-Konsole eine
Fehlermeldung anzeigen, denke ich. Deshalb suche ich das Problem in
dem Skript. Aber ich bin auch für andere Erklärungen offen.

>> Ich habe keinen, daher kann ich meine Seiten nicht weiter testen und muss
>> warten, bis irgend ein Apple-User eine davon aufruft.
>
> <http://browserstack.com/>

Super! Werde ich gleich morgen ausprobieren.

>> Leider habe ich nicht die geringste Ahnung von php, deshalb ist mir dieses
>> Verhalten völlig rätselhaft.
>
> Weshalb führst Du Programme auf Deinem Server aus, bei denen Du „nicht die
> geringste Ahnung“ hast, was sie tun – ausser, dass sie *offensichtlich das
> Dateisystem Deines Servers verändern*? Ist das nicht ein bisschen, hm,
> *GROB* *FAHRLÄSSIG??'*

Was soll ich machen? Wenn ich meine Dateien vor Cross-Site-Scripting schützen
will und rausfinden will, wo es noch hakt, muss ich irgendwie an die CSP-Berichte
rankommen, welche die Browser posten.

> Das “?>” am Ende würde ich weglassen, damit nicht versehentlich Whitespace
> generiert wird.

Ah, wieder was gelernt. Danke.

> Ansonsten könnte ich Dir zwar jede Zeile einzeln erklären,
> aber erstens ist das hier off-topic, und zweitens so wenig komplex, dass die
> angemessene Antwort lautet: RTFFAQ, RTFM, STFW.

Ich denke, ich weiß, was die einzelnen Zeilen bewirken. Ich weiß nur nicht, warum
sie seit heute mittag etwas anderes (und sehr seltsames) bewirken als vorher.

Viele Grüße
Harald
--
Ein Schauspieler liest allein eine japanische 2-Personen-Komödie. Auf deutsch.
Klingt irgendwie komisch? Ist auch sehr komisch.
Am Samstag, den 22.10.2016 um 20:00 im Zimmertheater Steglitz
https://www.effenberg.de/wer-zuletzt-lacht.htm

Thomas 'PointedEars' Lahn

unread,
Aug 31, 2016, 7:33:06 AM8/31/16
to
Harald Effenberg wrote:

> "Thomas 'PointedEars' Lahn" <Point...@web.de> schrieb:
>> Harald Effenberg wrote:
>>> | Content Security Policy: Die Seiteneinstellungen haben das Laden einer
>>> | Ressource auf self festgestellt ("script-src https://www.effenberg.de
>>> | https://code.jquery.com https://ajax.googleapis.com
>>> | https://*.google.com https://pagead2.googlesyndication.com"). Ein
>>> | CSP-Bericht wird gesendet.
>>
>> Sicher, dass das eine Fehlermeldung ist?
>
> Dann halt eine Verletzung der Policy. Jedenfalls meint der Browser doch
> scheinbar, dass da etwas auf der Seite über die im Headerfeld (danke)
> genannten Freigaben hinausgeht und er die Verarbeitung verweigern würde,
> wenn das Headerfeld mit "Content-Security-Policy" statt mit
> "Content-Security-Policy-Report-Only" betitelt wäre.

ACK

> Wozu schickt der sonst den Bericht?

Information, dachte ich.

>>> ANFSCD:
>> WTF?
> https://www.google.de/?#q=ANFSCD&gfe_rd=cr

ACK :)

>>> Bisher immer nur durch Apple-Browser.
>> Wie kommst Du darauf?
>
> Wegen der User-Agents. Das waren heute nachmittag noch nur Apple-Browser:

ACK

> Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_4 like Mac OS X)
> AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G35
> Safari/601.1

Das sind möglicherweise Safari Mobile für iPhone mit iOS 9.3.4, …

> Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.4.4
> (KHTML, like Gecko)

… Safari für Mac OS X 10.10.5, …

> Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46
> (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1

… und Safari Mobile für iPhone mit iOS 9.1. Könnte aber auch anders
sein, weil jemand die jeweilige Version sehen will, und das User-Agent-
Headerfeld fälscht.

> Mittlerweile sind allerdings auch Chrome-Browser dabei. Aber kein einziger
> Firefox. Und kein Windows-Rechner.

Kann vorkommen. Das Feature ist noch recht neu, der Standard dazu auch.
Eventuell wird das Senden des Berichts auch durch Privatsphäre-Einstellungen
oder Inkognito-Modus unterdrückt.

>> Und was erwartest Du? Dass Browser das Script von sich aus finden, weil
>> Du es anbietest?
>
> Ja. Manchmal geht halt jemand auf eine meiner Seiten. Und falls sein
> Browser eine "Violation" findet, schickt der einen Bericht. Auch, wenn es
> ein Firefox ist. Aber deren Berichte kommen seit heute mittag nicht mehr
> bei mir an. Würde der Server sie nicht annehmen, müsste die
> Firefox-Konsole eine Fehlermeldung anzeigen, denke ich.

ACK. Ich habe mich jetzt über CSP genauer informiert¹. Der Parameter
“report-uri /csp-report.php” in Deinem “Content-Security-Policy-Report-
Only”-Response-Headerfeld gibt den Request-URI für den Bericht an. [1]

> Deshalb suche ich das Problem in dem Skript. Aber ich bin auch für andere
> Erklärungen offen.

Ausser, dass das Script unleserlich geschrieben ist und nicht überprüft, ob
die Datei geöffnet werden konnte, sehe ich keine Probleme darin oder damit.

Du könntest auf einem lokalen Webserver (Du hast hoffentlich einen) den
originalen Request anschauen, indem Du $data gleich nach dem
file_get_contents() auf stdout/stderr ausgibst. Am einfachsten ginge das
mit dem in PHP CLI seit Version 5.4.0 eingebauten Webserver, per “php -S”.

>>> Leider habe ich nicht die geringste Ahnung von php, deshalb ist mir
>>> dieses Verhalten völlig rätselhaft.
>> Weshalb führst Du Programme auf Deinem Server aus, bei denen Du „nicht
>> die geringste Ahnung“ hast, was sie tun – ausser, dass sie
>> *offensichtlich das Dateisystem Deines Servers verändern*? Ist das nicht
>> ein bisschen, hm, *GROB* *FAHRLÄSSIG??'*
>
> Was soll ich machen?

Den Umstand „nicht die geringste Ahnung“ beseitigen, *bevor* Du sowas tust.

> Wenn ich meine Dateien vor Cross-Site-Scripting schützen will und
> rausfinden will, wo es noch hakt, muss ich irgendwie an die CSP-Berichte
> rankommen, welche die Browser posten.

ACK

>> Ansonsten könnte ich Dir zwar jede Zeile einzeln erklären,
>> aber erstens ist das hier off-topic, und zweitens so wenig komplex, dass
>> die angemessene Antwort lautet: RTFFAQ, RTFM, STFW.
>
> Ich denke, ich weiß, was die einzelnen Zeilen bewirken.

Dann ist Deine Beschreibung „nicht die geringste Ahnung von php“ jedoch
unrichtig und irreführend.

> Ich weiß nur nicht, warum sie seit heute mittag etwas anderes (und sehr
> seltsames) bewirken als vorher.

Das PHP-Script hängt Text an eine Textdatei an. Ob Dein Editor für ein
mögliches Problem relevant ist, hängt davon ab, wo das Script läuft und wo
Dein Editor (welcher?) läuft. (Im Worst Case gibt es ein Problem mit dem
Dateisystem, der Partition oder dem Datenträger, auf das/den geschrieben
werden soll.)


PointedEars
___________
¹ und bei der Gelegenheit gleich das Script in [1] korrigiert

[1] https://de.wikipedia.org/wiki/Content_Security_Policy
--
PointedEars
Zend Certified PHP Engineer
<http://www.zend.com/en/yellow-pages/ZEND024953> | Twitter: @PointedEars2
Please do not cc me. / Bitte keine Kopien per E-Mail.

Harald Effenberg

unread,
Sep 2, 2016, 5:42:47 AM9/2/16
to
"Thomas 'PointedEars' Lahn" <Point...@web.de> schrieb:

>>> Harald Effenberg wrote:
>>>> | Content Security Policy: Die Seiteneinstellungen haben das Laden einer
>>>> | Ressource auf self festgestellt ("script-src https://www.effenberg.de
>>>> | https://code.jquery.com https://ajax.googleapis.com
>>>> | https://*.google.com https://pagead2.googlesyndication.com"). Ein
>>>> | CSP-Bericht wird gesendet.

Danke, dass Du Dir Gedanken gemacht hast, aber: Ich gebe auf.
Dieses CSP-Zeug ist zu kompliziert für mich.

Was die Beschränkung auf Apple-Browser angeht, so war es wohl Zufall. Mittlerweile
haben alle möglichen Browser Reports geschickt, auch Edges und Firefoxes und alles,
was man sich wünschen kann.
Es sieht eher so aus, als kämen die Reports von *meinen* Browsern nur sehr selten
an. Das macht micht erstens total wuschig, weil ich's nicht verstehe und es keine
Regelmäßigkeit zu geben scheint, und zweitens kann ich die CSP-Einstellungen
dadurch nicht testen.

Denn es gibt ja nicht nur diese rätselhaften Reports mit
"blocked-uri": "self",

es gibt auch
"violated-directive": "img-src 'self' *.google.com *.googleapis.com *.gstatic.com",
-------------------
"blocked-uri": "http://www.google.com"

und jede Menge
"violated-directive": "script-src 'self' code.jquery.com ajax.googleapis.com *.google.com pagead2.googlesyndication.com",
"blocked-uri": ""

sowie
"violated-directive": "img-src 'self' *.google.com *.googleapis.com *.gstatic.com",
"blocked-uri": "data",
bei denen ich nur raten kann, von welchem Problem man mich in Kenntnis setzen möchte

und dazu noch
"blocked-uri": "eval",
"source-file": "https://apis.google.com",

an denen ich ohnehin nichts ändern kann, so lange ich nicht bereit bin, die Links
zu google-Skripten zu entfernen.

Danke für Deine Mühe!

Viele Grüße
Harald
--
Zwei ganz unterschiedliche Sichtweisen.
Einerseits "Aber meine Ehre und meine Würde werde ich mir bewahren":
http://www.zeitfilm.tv/html/brief_an_harald_effenberg.html
Und andererseits: https://www.effenberg.de/castingkultur.php
0 new messages