Gibt es eine bessere Art und Weise zu desinfizieren Eingabe mit javascript?

Wollte ich schreiben eine javascript-Funktion zur Bereinigung von Benutzereingaben und entfernen Sie alle unerwünschten und gefährlichen Zeichen.

Es müssen nur die folgenden Zeichen:

  • Alfanumeric Zeichen (groß-insentitive): [a-z][0-9].
  • Innere whitespace-Zeichen, wie "wort1 wort2".
  • Spanische Zeichen (groß-insentitive): [áéíóúñü].
  • Dem Unterstrich und dem Bindestrich [_-].
  • Punkt und Komma [.,].
  • Schließlich muss der string gekürzt werden mit trim().

Mein Erster Versuch war:

function sanitizeString(str){
str = str.replace(/[^a-z0-9áéíóúñü_-\s\.,]/gim,"");
return str.trim();
}

Aber wenn ich es täte:

sanitizeString("word1\nword2")

gibt es:

"word1
word2"

So, ich hatte zu schreiben, die Funktion zu entfernen explícitly \t\n\f\r\v\0:

function sanitizeString(str){
str = str.replace(/([^a-z0-9áéíóúñü_-\s\.,]|[\t\n\f\r\v\0])/gim,"");
return str.trim();
}

Ich würde gerne wissen:

  1. Gibt es eine bessere Art und Weise zu desinfizieren Eingabe mit javascript?
  2. Warum \n und \t nicht entspricht, in der ersten version, RegExp?
Sparen Sie sich die Zeit und Mühe nicht, tun Sie es auf den server. Javascript-Filterung ist zu einfach zu umgehen
Eigentlich mache ich das auf dem server mit SSJS, denn ich bin mit XPages auf das backend. Ich könnte das gleiche sagen, wenn ich mit Node.js. 🙂
Ermöglichen Sie neue Zeile, tab, etc. mit \s. Wenn Sie nur wollen, zu ermöglichen Räume, verwenden Sie ein Leerzeichen im regulären Ausdruck statt.
\s bedeutet nicht "ein Platz". Es umfasst die "tab", "Platz", "Wagenrücklauf", "neue Zeile", "vertikaler Tabulator" und "form feed".
Fügen Sie es als eine Antwort, \s war das problem. Sie haben erwähnt, dass, bevor Derek (auch hatte ich, um den Bindestrich am Ende).

InformationsquelleAutor Johann Echavarria | 2014-04-20

Schreibe einen Kommentar