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:
- 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) &
=>&
"
=>"
'
=>'
/
=>/
- Encoder soumis Url (paramètres GET, etc.)
- 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.
Il devrait être suffisant, tant que vous spécifiez votre codage de caractères.
OriginalL'auteur onlineracoon | 2012-10-09
Vous devez vous connecter pour publier un commentaire.
Ici est un général encoder procédure:
Si votre utilisateur n'a pas les soumettre quelque chose à votre serveur, vous n'avez même pas besoin de la ci-dessus. Si l'utilisateur soumet à l'aide de la saisie de l'utilisateur, puis la ci-dessus doivent être sûrs. Aussi longtemps que le '<' et '>' sont globalement assaini et les parenthèses sont aussi vous êtes bon pour aller.
Voir cet article de la triche
L'owasp triche couvre tous les scénarios possibles pour les XSS. Si vous n'êtes pas de la sortie de données dans les balises " définitions (pas de contenu) ou à l'intérieur des balises de script, vous pouvez omettre tout un tas de.
Il a obtenu, merci pour les réponses!
Vous devez être bien avec ce que vous avez.
OriginalL'auteur Konstantin Dinev
pourquoi ne pas utiliser
encodeURIComponent
avant d'envoyer les données au client?+1
mettre les choses au clair. si la réponse est non mal, il n'y a pas de raison de downvote. si il y a des réponses de meilleure qualité, ils seront upvoted.La réponse est fausse. Si quelqu'un entre dans
<script>...</script>
, ils ne s'attendent pas à être rendu comme%3Cscript%3E...%3C/script%3
. Il mangles caractères spéciaux dans un bruit de ligne. Vous pouvez prévenir les attaques de type XSS en rejetant absolument tous les commentaires, ce n'en est pas une solution au problème.Je n'ai pas downvote, merci pour votre réponse en tout cas 🙂
Merci @RASG! @Quentin; Oui, si vous avez une ligne de l'éditeur, qui va être le cas. Mais ce n'est pas onlineracoon de la question. Son sujet de XSS. À cet effet, il veut empêcher l'utilisateur d'écrire des scripts qui s'exécutent sur des userB. Si il utilise encodeURI lors de l'envoi de HTML à l'utilisateur b, il sera "horrible" oui, mais UserB verrez comme <script>...</script>. Même que si vous voulez les remplacer par des entités html que l'on a accepté de répondre à propose. Et la bonne blague au sujet de "rejet de tous les intrants". Il pourrait également l'arrêt de son site web afin de prévenir les attaques de type XSS 😉
OriginalL'auteur japrescott
Considérant https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
Ici est une mise en œuvre de leurs recommandations :
Assurez-vous également que vous utilisez cette fonction uniquement lorsque c'est nécessaire ou vous pourriez casser des trucs.
Mais je vous suggère de jeter un oeil à déjà fait des bibliothèques pour sanatizing de sortie :
https://github.com/ecto/bleach
OriginalL'auteur Hybris95