Question

J'essaie de trouver des moyens d'assainir l'entrée du ADM éditeur.

Plus précisément, je suis en train de faire des balises HTML uniquement disponibles dans les <code>tags que les ADM génère. Est-ce possible

Mon problème est que le code suivant est rendu HTML qui est vunerable à potentiel attaques XSS .

Par exemple, <a onmouseover="alert(1)" href="#">read this!</a>

Le code ci-dessus rend normalement à la fois en mode de prévisualisation et lors de l'enregistrement de la base de données.

Je remarque que le débordement de pile ne semble pas avoir ce problème. Le même code est tout simplement rendu sous forme de texte.

Je remarque que l'équipe Stack Overflow a partagé son code http://refactormycode.com / codes / 333-sanitize-html . Dois-je vraiment utiliser C # pour armes de destruction massive de Désinfectez de le faire?

Était-ce utile?

La solution

Je fini par utiliser HTML Purifier pour cela.

Autres conseils

Si vous voulez bloquer les mauvais scripts de destruction massive sur le côté client, jetez un oeil à ma réponse ici: Aligner aperçu de l'éditeur HTML de destruction massive avec côté serveur validation HTML (par exemple, pas de code JavaScript intégré) .

Il montre comment implémenter un côté client whitelist dans l'éditeur d'ADM pour restreindre volet de prévisualisation de destruction massive HTML à des éléments HTML de sécurité connus et les attributs HTML de sources sûres. Il fait la validation après ADM geneates son HTML, même s'il y a un bogue dans la génération HTML de l'éditeur ADM qui permet mauvais script pour passer à travers, le bloqueur whitelist va l'attraper. Ce code est basé sur la mise en œuvre de StackOverflow.com de la même validation.

Cela dit, vous avez également besoin de validation côté serveur aussi (Si vous utilisez PHP, HTML Purifier est un bon choix), parce que même si vous fixez le client, qui ne l'empêche pas un attaquant de simuler un navigateur et sauver démarquage malveillants en-ing POST sur votre serveur. Ce faisant côté client ADM prévisualiseur validation n'est pas réellement nécessaire, sauf pour se défendre contre un cas obscur où un attaquant parvient à se compromettre démarques sur le serveur, et persuade un modérateur du site pour modifier la page. Dans ce cas, la validation client ADM visualisateur pourrait empêcher un attaquant de prendre sur l'ensemble du site.

En outre, faire la validation côté client peut être utile, car vous savez que les mêmes balises HTML et autorisés par le client seront également autorisés sur le serveur. Assurez-vous de synchroniser le côté serveur whitelist avec le client whitelist. StackOverflow de liste blanche est ici si vous voulez un exemple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top