Es gibt ein Node.js-Projekt, das Daten bereinigt, und eine OWASP-Bibliothek für JavaScript, die eine Bereinigung vornimmt, um XSS zu verhindern.
Ich habe Benchmarking diese Bibliotheken, und sie sind ziemlich intensiv und vielleicht ein Overkill, meine Anwendung braucht keine dynamischen HTML (von Benutzern, bbtags oder was auch immer, überhaupt nicht erforderlich), also warum nicht tun es wie diese:
- Deaktivieren "
<
" und ">
"Wenn der Benutzer diese Zeichen eingibt, geben Sie ihm eine Warnung, dass diese Zeichen deaktiviert sind (Client- und Server-seitige Validierung). &
=>&
"
=>"
'
=>'
/
=>/
- Verschlüsselung der übermittelten URLs (GET-Parameter usw.)
- DOM-basiertes XSS ist abgedeckt, da meine Anwendung HTML5 PushState verwendet und das Backend vollständig vom Frontend getrennt ist.
Würde dies ausreichen, um mich zu schützen? Wie gesagt, meine Anwendung erfordert keine von den Benutzern übermittelten HTML-Daten, daher brauche ich die <
y >
Tags überhaupt nicht.
Vielen Dank für die Rückmeldungen, das ist das, was ich im Moment verwende:
var pattern = /<(.*)>/;
function hasHtmlTags(string) {
return pattern.test(string);
};
if (hasHtmlTags(userData)) {
// Do something?
} else {
// Create entity.
}
Die Benutzer können also weiterhin ihre Emoticons :< und so weiter verwenden, und die Funktion wird nur ausgelöst, wenn eine Kombination aus < und > gefunden wird. Also keine teuren regulären Ausdrücke und dergleichen, sondern einfach < und > in Kombination deaktivieren, und alles sollte gut sein.