wie kann ich Sie reinigen und desinfizieren die eine url von einem Benutzer übermittelt für "neuanzeige" in java?
Ich möchte einem Benutzer die Möglichkeit zum senden einer url und zeigt dann, dass die url an andere Benutzer als link.
Wenn ich naiv wieder anzuzeigen, was dem Benutzer vorgelegt, lasse ich mich öffnen, um urls wie
http://somesite.com' ><script>[any javacscript in here]</script>
dass, wenn ich es wieder einzublenden, um andere Nutzer etwas tun, böse, oder zumindest etwas, dass mich unprofessionell für nicht verhindern.
Gibt es eine Bibliothek, vorzugsweise in java, das wird reinigen eine url, so dass es behält alle gültigen urls, aber Unkraut irgendwelche exploits/Unsinn?
Dank!
- Haben Sie einen Blick hier.
- Sie möchten URLEncoding oder Sie nicht wollen, um den ganzen URL ???
- Diese Frage bittet um eine **gültige URL regulärer Ausdruck: stackoverflow.com/questions/161738/... **. Die Antworten sind hilfreich. Sie möchte einfach braucht um eine regular expression matcher in java
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie apache-validator URLValidator
URLs mit
'
sind vollkommen gültig. Wenn Sie Sie ausgeben, um ein HTML-Dokument, ohne die Flucht, dann liegt das problem in Ihrer mangelnden HTML-escaping, nicht in die Eingaben zu prüfen. Sie müssen sicherstellen, dass Sie rufen eine HTML-Codierung-Methode jeder Ausgabe der Variablen text (einschließlich URLs) in ein HTML-Dokument.Java nicht haben einen eingebauten HTML-encoder (schlechte show!) aber die meisten web-Bibliotheken (treffen Sie Ihre Wahl, oder schreiben Sie es sich mit ein paar string ersetzt). Wenn Sie die Verwendung von JSTL-tags, erhalten Sie
escapeXml
um es kostenlos tun, indem Sie default:Während Ihr Hauptproblem ist, HTML-escaping, ist es möglicherweise trotzdem von Vorteil um zu überprüfen, ob eine Eingabe-URL gültig ist, zum abfangen von Fehlern - Sie können tun, dass durch die Analyse es mit
new URL(...)
und zu sehen, wenn Sie eine MalformedURLException.Sollten Sie auch überprüfen, dass die URL beginnt mit einer bekannt-guten Protokoll wie
http://
oderhttps://
. Dies wird verhindern, dass jemand mit gefährlichen URL-Protokolle wiejavascript:
die führen kann zu cross-site-scripting so einfach wie HTML-injection kann.Ich denke was du suchst ist die Ausgabe-Kodierung. Haben Sie einen Blick auf OWASP ESAPI die bewährte Art und Weise, führen Sie die Codierung in Java.
Auch nur ein Vorschlag, wenn Sie möchten, um zu überprüfen, ob ein Benutzer die übermittlung bösartige URL, die Sie überprüfen können, dass gegen Google malware-Datenbank. Sie können SafeBrowing - API für das.