Sicherheitsfunktionen in JavaScript?

Westbär

Mitglied
Hallo
Ich habe gerade ein Script geschrieben in den man "In-Line" den Namen ändern kann.
Das Script versteckt den Text, liest den Inhalt aus und gibt ihn in das input feld. Nach drücken des buttons ändert das Script den Namen des Textes und sendet einen AJAX Request los.
Soweit sogut, es funktioniert.

Nur ich hab ein Manko in punkto Sicherheit.
Wenn ich eingebe "<b>blub</b>" oder irgendwelche anderen Befehle, werden diese Ausgeführt. Zum glück keine JS-Alerts, trotzdem will ich auch das HTML unterbinden.

In PHP hab ich sowas immer mit trim() und addslashes() und htmlspecialchars() gemacht, wie mach ich es in JavaScript?

Gruß
 
Hi,

du kannst die Eingaben mit regulären Ausdrücken prüfen und HTML-Tags entfernen.
Code:
strHelp = "<div class=\"Klasse\" onclick=\"alert('Ein Alert!');\"><b>removTags</b> - mit regulären Ausdrücken<br /></div>";

String.prototype.removeTags = function(){
  return this.replace(/<[^>]*>/gi, "");
}

alert(strHelp.removeTags());
Im Beispiel wird das String-Objekt um die Methode removeTags erweitert, die sämtliche HTML-Tags entfernt.

Ciao
Quaese
 
Ich gehe mal davon aus, dass du in deinem Skript die innerHTML-Eigenschaft des betreffenden Elementes änderst. Falls ja, tu das nicht, sondern weise den Wert stattdessen der data-Eigenschaft des firstChild des Elementes zu.

Der Unterschied: innerHTML ändert HTML-Code, data jedoch Zeichendaten von Textknoten...die Zeichen werden dann nur dargestellt.
 
Vielen Dank!
Hab mir jetzt das firstChild Dokument von der Mozilla Developer Seite durchgelesen und sofort verstanden.
(http://developer.mozilla.org/en/docs/DOM:element.firstChild)

Ich habs jetzt so gemacht und es funktioniert einwandfrei!
Javascript:
document.getElementById('textEdit').firstChild.data=document.getElementById('rename_name').value;

Jap, genau ich habs mit innerHTML geändert.

Vielen Dank nochmal

Gruß
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück