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:
- Gibt es eine bessere Art und Weise zu desinfizieren Eingabe mit javascript?
- 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
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).
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die neue version der sanitizeString Funktion:
Das Hauptproblem war, erwähnt von @RobG und @Derek: (@RobG verfassen Sie Ihren Kommentar als Antwort und ich werde es akzeptieren) \s bedeutet nicht, was jetzt w3Schools sagt
Es bedeutet, was MDN sagt
Ich vertraute auf w3Schools, wenn ich schrieb, die Funktion.
Eine zweite Veränderung war der Umzug der Bindestrich ( - ), um das Ende, um zu vermeiden, es ist Trennzeichen Bedeutung.
(für IBM Notes XPagers) ich Liebe Sie javascript, XPages SSJS. Dies ist
einfacher für mich, als den Java-Weg.
InformationsquelleAutor Johann Echavarria