ChrisB: Text als Text behandeln, nicht als HTML

Beitrag lesen

Hi,

Um nun zu verhindern, dass ein Gast schadhaften PHP / HTML oder JavaScript Code einschleust,

Dass PHP-Code clienseitig keine Gefahrenquelle darstellen kann, hatten wir ja nun schon.

habe ich für die "Vorschau-Anzeige" eine JavaScript Funktion geschrieben, die alle < > gegen &lt; &gt; austauscht.
Dadurch werden z.B. HTML Befehle nicht mehr ausgeführt, sondern als Text angezeigt.

Wenn du etwas nur als Text dargestellt haben willst - dann lasse es einfach nur als Text darstellen, dann brauchst du keinerlei Ersetzungen vornehmen.

text = document.getElementById("textbox").value;
text = text.replace(/</g,"&lt;");
text = text.replace(/>/g,"&gt;");
document.getElementById("preview_text").innerHTML = text;

Du willst also nicht, dass HTML-Code interpretiert wird - wieso weist du denn den Inhalt dann der innerHTML-Eigenschaft eines Elementes zu?

Greife einfach auf einen Textknoten innerhalb des Elementes, in dem du das ganze darstellen lassen willst, zu - und weise den Inhalt dessen data-Eigenschaft zu. Da kann der Nutzer so viele < und > eingeben, wie er will - Text bleibt Text.

MfG ChrisB

--
"The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."