Javascript Prévention

Il y a un Node.js projet qui nettoie les données et il y a un OWASP bibliothèque JavaScript qui gère l'assainissement pour prévenir les attaques de type XSS.

J'ai été l'analyse comparative de ces bibliothèques, et ils sont assez intensif et peut-être exagéré, ma demande n'a pas besoin de HTML dynamique (soumis par les utilisateurs, bbtags ou ce que jamais, pas nécessaire du tout) alors pourquoi ne pas faire comme ceci:

  1. Désactiver "<" et ">" des personnages, de ne pas les remplacer ou quoi que ce soit, juste les désactiver, si l'utilisateur soumet ces, de leur donner un avertissement que ces sont désactivés (le client et la validation côté serveur)
  2. & => &amp;
  3. " => &quot;
  4. ' => &#x27;
  5. / => /
  6. Encoder soumis Url (paramètres GET, etc.)
  7. DOM basé XSS est couvert depuis mon application utilise HTML5 PushState et le backend est entièrement séparé du frontend.

Serait-ce assez pour me protéger, comme je l'ai dit, mon application ne nécessite pas de HTML soumis par les utilisateurs, donc je n'ai pas besoin de la < et > balises à tous.

Merci pour tous les commentaires, c'est ce que j'utilise en ce moment:

var pattern = /<(.*)>/;

function hasHtmlTags(string) {
    return pattern.test(string);
};

if (hasHtmlTags(userData)) {
    //Do something?
} else {
    //Create entity.
}

De sorte que les utilisateurs peuvent toujours utiliser leur émoticônes :< et tel, et uniquement la fonction est déclenchée si une combinaison de < et > se trouve. Donc pas cher les expressions régulières, il suffit de désactiver le < et > en combinaison, et nous devrions être bien.

Je vois, mais les utilisateurs ne l'utilisent pas que offen, et si ils le font, ils ne sont pas indispensables. Alors je me suis dit, pourquoi ne pas épargner l'excès et de les désactiver.
Il devrait être suffisant, tant que vous spécifiez votre codage de caractères.

OriginalL'auteur onlineracoon | 2012-10-09