ist Nehmen wir die Frame-Vorfahren-Direktive. Sagen wir, ich möchte http://*.parent.com
erlauben meine Seite an beiden https://child.com
und http://child.com
zu laden:CSP-URL-Schema http: // stimmt überein, wenn das Schema der Ressource entweder http: // oder https: //
- Wenn ich
frame-ancestors https://*.parent.com
wir Verletzung eine offensichtliche haben
gesetzt Wenn ich
- Wenn ich
frame-ancestors http://*.parent.com
setze, funktioniert es in beiden Fällen. Warum ?
frame-ancestors *.parent.com
gesetzt haben wir eine Verletzung für
https://child.com
.
aus der Zitiert CSP2 spec:
- Wenn die Quelle Ausdruck einen Schema-Teil hat, der keine Groß- und Kleinschreibung Übereinstimmung für url-Schema ist, dann wieder tut nicht übereinstimmen.
- Wenn der Quellausdruck eine Regelung nicht habe, Rückkehr nicht übereinstimmt, wenn eine der folgenden Bedingungen erfüllt ist:
- das Schema der URL der geschützten Ressource eine Groß- und Kleinschreibung Übereinstimmung für HTTP ist, und URL-Schema ist Keine Übereinstimmung zwischen Groß- und Kleinschreibung, weder für HTTP noch für HTTPS
- Das Schema der URL der geschützten Ressource unterscheidet nicht zwischen Groß- und Kleinschreibung, und URL-Schema berücksichtigt keine Groß-/Kleinschreibung für das Schema der URL der geschützten Ressource.
Fall 2 meiner Beispiele müssen nach Zustand Drossel 5.2 der Spezifikation seit https://child.com
kein Spiel für HTTP ist, dass ich verstehe.
Aber warum funktioniert Fall 3 für https://child.com
? Laut Bedingung 4 sollte es fehlschlagen, da http://*.parent.com
nicht mit dem Schema https://child.com
übereinstimmt. Was vermisse ich ?