2008-09-15 7 views
1

J'utilise un éditeur de texte enrichi sur une page Web. .NET a une fonctionnalité qui empêche l'affichage des balises HTML, j'ai donc ajouté un extrait JavaScript pour changer les chevrons et alias paire de caractères avant la publication. L'alias est remplacé sur le serveur avec l'angle nécessaire, puis stocké dans la base de données. Avec XSS de côté, quels sont les moyens courants de résoudre ce problème. (C'est-à-dire qu'il y a un meilleur moyen?)Meilleures pratiques WYSIWYG du navigateur

Si vous avez des commentaires sur XSS (cross-site scripting), je suis sûr que cela aidera quelqu'un.

Répondre

3

Il existe un moyen de désactiver cette fonction. Cela permettra à l'utilisateur d'afficher les caractères de son choix, et il ne sera pas nécessaire de convertir les caractères en alias en utilisant Javascript. Voir cet article pour disabling request validation. Cela signifie que vous devrez faire votre propre validation, mais d'après les sons de votre message, il semble que c'est ce que vous cherchez à faire de toute façon. Vous pouvez également le désactiver par page en suivant the instructions here.

1

Mon premier commentaire serait d'éviter d'utiliser JavaScript pour changer les chevrons. Contourner ceci est aussi simple que de désactiver JavaScript dans le navigateur. Presque toutes les langues côté serveur ont une méthode utilitaire qui convertit certains caractères HTML en leurs homologues d'entité. Par exemple, PHP utilise htmlentities(), et je suis sûr que .NET a une méthode utilitaire équivalente. Pour le moins, vous pouvez faire un regex remplacer pour les chevrons, les parenthèses et les guillemets doubles, et cela vous aidera à trouver une solution sécurisée.

3

Je pense que la façon la plus sûre d'aller est de ne PAS permettre à l'utilisateur de créer des tags avec votre WISYWIG. Peut-être que d'utiliser quelque chose comme un éditeur de démarques comme sur ce site ou available here. serait une autre approche.

Conservez également la directive Page ValidateRequest = true qui devrait empêcher le balisage d'être envoyé dans la requête, vous devrez bien sûr gérer cette erreur quand elle apparaîtra. Les utilisateurs pourront toujours injecter des tags dans la requête en utilisant des extensions firefox comme Tamper data, mais ValidateRequest = true devrait au moins empêcher ASP.NET de les accepter.

Un article simple sur les attaques XSS a été récemment fait par Jeff ici. Il parle également de faire vos cookies HttpOnly, qui est une semi-défense contre le vol de cookies. Bonne chance!

+1

ouais, mais le seul problème avec Markdown est qu'il autorise explicitement * le balisage HTML aux côtés de Markdown .. ce qui le rend assez difficile –

+0

Comment faire pour supprimer explicitement des balises HTML "dangereuses"? Y a-t-il une bibliothèque qui peut être utilisée? – Shiv