2015-02-19 7 views
15

Einige Seiten werden nicht korrekt auf Mobiltelefonen empfangen (viele in Frankreich): JavaScript-Skriptelemente sind inline.Meine Skripte sind von einigen Mobilfunkanbietern inline - Wie geht man damit um?

Statt

<script src="static/jquery-2.1.3.min.js"></script> 

zu haben habe ich

<script> ... content of the whole jQuery script ... </script> 

Als Content Security Policy-Header Ich habe verbietet Inline-Scripts, moderne Browser die Ausführung des Skripts blockieren.

Gibt es eine Möglichkeit, anders als mit HTTPS umzugehen? Vielleicht sollte eine Möglichkeit, die Seite anzugeben, nicht von Dritten neu geschrieben werden?

Hinweise:

  • der CSP-Header ist nicht genug, um einen Hinweis auf die von Drittanbietern, die Transformation zu tun
  • der Cache-Control:no-transform Header als auch
  • jede Antwort ignoriert denen die Zugabe eines Inline Skript ist keine Antwort, da das Ziel darin besteht, alle Inline - Skripte für die Sicherheit zu entfernen
  • das Problem ist nicht verwandt mit der Injektion von ergänzenden Skripten (das würde meine Website nicht als die brechen Browser angewiesen, sie nicht auszuführen), sondern auf die inlining des vorhandenen Skripte
  • das Problem ist nicht spezifisch für jeden Betreiber: Ich bin für eine (reasonnably) allgemeine Lösung
+0

Können Sie uns zeigen, worüber Sie sprechen? Das scheint ein bisschen vage zu sein. Außerdem haben Sie uns nicht mitgeteilt, welche serverseitige Sprache oder Ihr Framework Sie verwenden, um diesen Inhalt bereitzustellen. Sind Sie sicher, dass es ein Mobilfunkanbieter ist? Wenn ja, was macht dich sicher? Welche Tests haben Sie durchgeführt, um das festzustellen? –

+0

@GeorgeStocker Ich sehe [diese Seite] (http://dystroy.org/miaou/login) von verschiedenen Geräten. Die meisten von ihnen erhalten die normale Version (und es scheint nicht im Zusammenhang mit Benutzer-Agent oder solche Dinge zu sein, die Sie leicht verspotten können). –

+0

Öffnen dieser Seite mit Desktop-Chrome im Emulationsmodus zeigt keine Skripte inline, so dass es wie ein Proxy/ISP-Problem klingt. – ssube

Antwort

5

Nicht suchen, um die eleganteste Lösung, aber Sie können immer versuchen, den ISP zu glauben, dass es keine js-Ressource ist, indem Sie die Dateierweiterung ändern (was wahrscheinlich eine Änderung im Mime-Typ in der Kopfzeile verursachen würde, die Sie senden).

Dienen die Datei als jquery.java oder eine andere Erweiterung. Wieder nicht die eleganteste Lösung, aber wie Tadman in den Kommentaren sagt, ist es manchmal nicht einfach, mit Idioten umzugehen.

+5

jquery.java ist die ultimative Beleidigung für Java- und JavaScript-Entwickler in der Welt. +1 –

+0

Es scheint zu funktionieren (wahrscheinlich wegen der falschen Header, aber ich habe vielleicht zu viel eine Meinung über ISP in der Annahme, sie wissen, was ein HTTP-Header ist) –

+0

Sie können nicht CDN gehostete Bibliotheken verwenden, wenn Sie solche tun wie http://code.jquery.com/jquery-2.1.3.min.js <- keine Kontrolle über diese Erweiterung – ShrekOverflow

0

Sie haben nach Lösungen gefragt, die HTTPS vermeiden, aber das sollten Sie tun. Verwenden Sie HTTPS für alle Ihre Inhalte und hören Sie auf, diese "nützlichen" MITMs zu verändern.

Holen Sie sich eine free TLS certificate (ab September 2015).

Die derzeit akzeptierte Lösung spielt nur ein Katz-und-Maus-Spiel. Wenn Sie sich um Sicherheit kümmern (die Sie einen CSP-Header liefern müssen), müssen Sie diese Art von Angriff stoppen, nicht versuchen, sie zu verstecken.

+0

Das beantwortet die Frage nicht wirklich (FTR mein Server wird jetzt in HTTPS bedient). –

Verwandte Themen