web-dev-qa-db-ger.com

Möglichkeiten, Javascript in URL einzufügen?

Duplikat von:

Welche häufigen Web-Exploits sollte ich kennen?

Dies ist eine Sicherheitsfrage.

Worauf muss ich bei einer URL achten, die Hacking verhindert?

Gibt es eine Möglichkeit, Javascript über eine URL auszuführen?

Wie Sie sehen, bin ich ziemlich neu in diesem Konzept.

Irgendwelche guten Beiträge zu diesem Zeug?

12
dev.e.loper

Ich glaube nicht, dass Sie über die URL hacken können. Jemand könnte versuchen, Code in Ihre Anwendung einzuspeisen, wenn Sie Parameter (entweder GET oder POST) an Ihre App übergeben, sodass Ihre Vermeidung sehr ähnlich ist wie bei einer lokalen Anwendung.

Stellen Sie sicher, dass Sie keine Parameter zu SQL- oder anderen Skriptausführungen hinzufügen, die vom Browser an den Code übergeben wurden, ohne sicherzustellen, dass die Zeichenfolgen keine Skriptsprache enthalten. Suchen Sie im nächsten Abschnitt nach Details zu Injektionsangriffen für die Entwicklungsplattform, mit der Sie arbeiten. Diese sollte viele gute Ratschläge und Beispiele liefern.

3
Lazarus

eine alte Frage, in die ich gestolpert bin und die meiner Meinung nach ein Update verdient hat ... Sie können Javascript von der URL ausführen, und Sie können auch darüber kreativ werden. Ich habe vor kurzem einen Mitgliederbereich eingerichtet, in dem ich jemanden daran erinnern wollte, wie sein Passwort lautet. Ich suchte also nach einer nicht lokalen Warnung. Natürlich können Sie eine Warnung in die Seite selbst einbetten, aber dann ist sie öffentlich. Der Unterschied hier ist, dass ich einen Link erstellen und ein paar JS in den Href einfügen kann. Wenn Sie auf den Link klicken, wird die Warnung generiert.

hier meine ich >>

<a href="javascript:alert('the secret is to ask.');window.location.replace('http://google.com');">You can have anything</a>

wenn Sie auf den Link klicken, erhält der Benutzer eine Benachrichtigung mit den Informationen. Anschließend werden sie zur neuen Seite weitergeleitet.

natürlich könnten Sie auch einen onClick schreiben, aber der href funktioniert gut, wenn Sie ihn durch die URL schieben. Denken Sie daran, "javascript:" voranzustellen.

* funktioniert in chrom, nichts anderes überprüft.

3
Pellmellism

Javascript kann für die aktuelle Seite ausgeführt werden, indem Sie es einfach in die URL-Adresse eingeben, z.

javascript:;alert(window.document.body.innerHTML);
javascript:;alert(window.document.body.childNodes[0].innerHTML);
2
cjk

Javascript in URL wird nicht eigenständig ausgeführt. Das bedeutet keinesfalls, dass es sicher ist oder dass man ihm vertrauen kann. 

Eine URL ist eine andere Benutzereingabe, die nicht als vertrauenswürdig eingestuft werden kann. GET oder POST (oder eine andere Methode für diese Angelegenheit) kann zu schwerwiegenden Sicherheitslücken führen. 

Ein häufiges Beispiel war/ist die Verwendung der Variablen PHP_SELF, REQUEST_URI, SCRIPT_NAME und ähnlichen Variablen. Entwickler fälschten sie fälschlicherweise direkt an den Browser an, was dazu führte, dass das Skript in die Seite eingefügt und ausgeführt wurde. 

Ich würde vorschlagen, dass Sie anfangen, viel zu lesen, dies sind einige gute Orte, um zu beginnen:

OWASP

XSS Cheat Sheet

XSS Prevention Spickzettel

Google around für XSS (Cross Site Scripting), XSRF (Cross Site Request Forgery) und SQL Injection. Das wird Ihnen den Einstieg erleichtern, aber es gibt eine Menge Informationen, die Sie aufnehmen müssen, also nehmen Sie sich Zeit. Es wird sich auf lange Sicht lohnen.

0
Gerry

Es hängt von Ihrer Anwendung und deren Verwendung ab, welche Sicherheitsstufe Sie benötigen.

In Bezug auf die Sicherheit sollten Sie alle Werte überprüfen, die Sie mit den Parametern für die Abfragezeichenfolge oder nach den Parametern erhalten, um sicherzustellen, dass sie gültig sind.

Sie können auch die Protokollierung für andere hinzufügen, einschließlich der Analyse von Weblogs, damit Sie feststellen können, ob versucht wird, Ihr System zu hacken.

Ich glaube nicht, dass es möglich ist, Javascript in eine URL zu injizieren und dies ausführen zu lassen, es sei denn, Ihre Anwendung verwendet Parameter, ohne sie vorher zu überprüfen.

0
Bravax

Ich glaube, die richtige Antwort lautet "es kommt darauf an". 

Wie andere bereits erwähnt haben, wenn die Webanwendung, die Ihre Anfrage verarbeitet, die empfangenen Payload- oder URL-Parameter (für GET-Anforderungen) naiv empfängt und zurücksendet, kann sie der Code-Injektion unterliegen.

Wenn die Webanwendung jedoch die Nutzdaten/Parameter desinfiziert und/oder filtert, sollte dies kein Problem sein.

Es hängt auch vom Benutzeragenten (z. B. Browser) ab. Ein benutzerdefinierter Benutzeragent kann Code ohne Benachrichtigung des Benutzers einfügen, wenn er in der Anforderung einen Code erkennt (Sie kennen keine öffentlichen, dies ist jedoch auch möglich).

0
emerino

Der Schlüssel dazu ist die Überprüfung aller Informationen, die Sie erhalten, und anschließend im Code auf dem Server angezeigt und/oder verwendet werden. Get/Post-Formularvariablen, wenn sie Javascript enthalten, das Sie speichern und später erneut angezeigt werden, ist ein Sicherheitsrisiko. So wie alle Dinge, die in einer von Ihnen ausgeführten SQL-Anweisung ungeprüft verkettet werden.

Ein möglicher Grund dafür sind Angriffe, die mit der Zeichencodierung durcheinander kommen. Wenn ich zum Beispiel ein Formular mit utf-8-Zeichensatz übermittle, Sie aber speichern und später in iso-8859-1 latein ohne Übersetzung anzeigen, kann ich möglicherweise etwas an Ihrem Validator vorbeischleichen. Der einfachste Weg, um damit umzugehen, ist, immer im selben Zeichensatz anzuzeigen und zu speichern. utf-8 ist normalerweise eine gute Wahl. Verlassen Sie sich in diesem Fall niemals auf den Browser, um das Richtige für Sie zu tun. Legen Sie explizite Zeichensätze fest, untersuchen Sie die empfangenen Zeichensätze und übersetzen Sie sie in den erwarteten Speichersatz, bevor Sie sie überprüfen.

0
Jeremy Wall

Wenn der Link Javascript hat, wird Javascript ausgeführt, ansonsten bin ich mit allen anderen hier einverstanden, es gibt keine Möglichkeit, dies zu tun.

SO ist klug genug, dies herauszufiltern!

0
cgp

JavaScript-Injection greift Ihre Webanwendung nicht an. JavaScript-Injection fügt einfach JavaScript-Code hinzu, damit der Browser ausgeführt werden kann. Die einzige Möglichkeit, wie JavaScript Ihrer Webanwendung schaden könnte, ist, wenn Sie einen Blogeintrag oder einen anderen Bereich haben, in dem Benutzereingaben gespeichert sind. Dies kann ein Problem sein, da ein Angreifer seinen Code einfügen und dort für andere Benutzer ausführen kann. Dieser Angriff wird als Cross-Site Scripting bezeichnet. Das schlimmste Szenario wäre Cross-Site Forgery, bei dem Angreifer eine Anweisung einfügen können, die das Cookie eines Benutzers stiehlt und dem Angreifer daher seine Sitzungs-ID gibt. 

0
spassen