HTML Tags in Textfeld verhindern


#1

Hi,

ich hab ein HTML Textfeld und möchte verhindern dass dort wer html-tags verwendet, zur Sicherheit. Im Moment ersetze ich alle “<” “>” Zeichen jeweils durch & lt; und & gt;
*(ohne Leerzeichen dazwischen, keine Ahnung wie man das hier schreiben kann ohne das wieder < > auftaucht)

Mich würde einfach nur interessieren ob das ausreichend ist, oder ob das irgendwie umgehbar/unsicher ist?


#2

Hast du denn schon mal Effekte ausprobiert, oder ist das nur eine Vermutung, dass HTML-Tags Ärger machen?
Vielleicht kann man mit Regex ein FilterDocument für das JTextField zusammenbauen…


#3

Hallo, ich weis nicht wofür du das brauchst aber vl hilft es dir in einer anderen Richtung.

Ich lasse auch dem User bei einer Anwendung von mir HTML code eingeben. Also ich habe einen WYSIWYG editor der HTML erzeugt. Um zu verhindern, dass der user mir dennoch script tags einbaut oder Links oder … verwende ich JSOUP zum Sanitzen.

JSOUP ist hier extremst einfach zu verwenden.

LG


#4

Kannst du nicht irgendwie bei der Verwendung des eingegebenen Strings sicherstellen, dass dieser nicht als HTML interpretiert wird, selbst wenn HTML enthalten ist?


#5

Naja, da das ganze auf eine Website eingebettet wird, ähnlich wie mit einem Gästebuch, muss ich die Browser davon abhalten irgendwas davon zu interpretieren. Und das ersetzen von < und > hilft, ich wundere mich nur ob das wirklich “sicher” ist oder ob jemand nicht doch irgendwie findigerweise ein < und > einschmuggeln könnte.

Naja das ist das Ziel :smiley:
Das versuche ich gleich nachdem meine Geldsorgen losgeworden bin in dem ich irgendwie reich werde - nett gemeinter Sarkasmus :wink:

Das hört sich interessant an, habe mich gerade ins Intro eingelesen und werde mir die funktionsweise heute später Abend mal genauer anschauen. Danke.


#6

Ich wusste ja nicht, dass du es direkt in eine HTML-Seite einbetten willst. Es hätte ja sein können, dass es bei der Verwendung des Textes noch eine Möglichkeit gegeben hätte, die Interpretation im Vornherein auszuschließen, dann hätte man sich keine Gedanken machen müssen, wie man die Zeichen versteckt.

Wenn du es direkt in HTML einbettest, pack doch < pre>…</ pre> drumherum (ohne Leerzeichen, das wird hier auch interpretiert). Die Optik kannst du ggf. über CSS anpassen. Da muss man natürlich vorher schauen, dass keiner ein < /pre> in den Text eingebaut hat.

Das Ersetzen der spitzen Klammern ist aber auch eine Variante, das habe ich auch schon in einem internen Projekt so gemacht, das war nun allerdings nicht so sicherheitsrelevant, daher bin mal gespannt, welche Vorschläge hier noch so kommen.


#7

In der Dokumentation steht nichts davon dass html darin nicht interpretiert wird oder “vorformattierter Text” soll eben genau das heißen.

hi

Nope

Es gibt eine Menge offizieller wie inoffizieller Dokumentation zu XSS und wie man auf Webseiten Sicherheitsmaßnahmen umgehen kann. Nirgends steht was von < > ersetzen. Aber! mich wundert es das sich viele Leute und Organisationen die Mühe machen ellenlange Dokumente darüber zu verfassen wenn sie bereits im ersten Satz hätten einfach schreiben können: ersetze < > und alles ist vom Tisch…


#8

Dies hier schon angeguckt: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet ?

Gibt einen eigentlich recht guten Überblick.
Mit HTML5 müsste es bei Rule#1 theoretisch reichen, < und > zu escapen, um XSS zu verhindern. ‘&’ und die anderen sind ja valide Zeichen, oder übersehe ich grad Fälle, in denen die auch Probleme machen können?