Beste Weg, um mit der Sicherheit und vermeiden von XSS mit Benutzer eingegebene URLs

Haben wir eine hohe Sicherheit Anwendung, und wir wollen, um Benutzern zu erlauben, geben Sie URLs, die anderen Benutzer sehen.

Dies führt zu einem hohen Risiko von XSS-hacks - ein Benutzer könnte möglicherweise geben Sie javascript, dass ein anderer Benutzer landet ausführen. Da wir sensible Daten es ist wichtig, dass dies nie passiert.

Was sind die best practices im Umgang mit diesem? Irgendeine security whitelist-oder-Flucht-Muster allein gut genug?

Irgendwelche Ratschläge über den Umgang mit Umleitungen ("dieser link geht, die außerhalb unserer Website" - Meldung auf einer Seite mit der Warnung, bevor Sie die folgenden link, zum Beispiel)

Ist es ein argument für die Unterstützung nicht Benutzer eingegebenen links überhaupt?


Klarstellung:

Grundsätzlich unsere Nutzer möchten, Eingang:

stackoverflow.com

Und haben es Ausgang zu einem anderen Benutzer:

<a href="http://stackoverflow.com">stackoverflow.com</a>

Was ich wirklich über sorgen Sie mit diesem in ein XSS hack. I. e. Sie Eingang:

alert('gehackt!');

So dass andere Benutzer bekommen diesen link:

<a href="alert('hacked!');">stackoverflow.com</a>

Mein Beispiel ist einfach zu erklären, das Risiko - ich bin mir bewusst, dass javascript-Code und URLs sind verschiedene Dinge, aber, indem Sie input-der letzteren sind Sie in der Lage zu führen Sie die ehemalige.

Sie werden staunen, wie viele Websites, die Sie brechen kann auch mit diesem trick - HTML ist sogar noch schlimmer. Wenn Sie wissen, dass Sie viel mit links zu tun, Sie wissen es auch zu desinfizieren <iframe><img> und clevere CSS-Referenzen?

Arbeite ich in einer Hochsicherheits-Umgebung - eine einzige XSS-hack könnte führen zu sehr hohen Verlusten für uns. Ich bin froh, dass ich produzieren könnte ein Regex (oder verwenden Sie eine der ausgezeichneten Vorschläge bisher) nicht ausschließen kann, dass ich alles, was ich denken konnte, aber würde das ausreichen?

InformationsquelleAutor der Frage Keith | 2008-10-15

Schreibe einen Kommentar