Comment utiliser fckEditor en toute sécurité, sans risque de script intersite?

StackOverflow https://stackoverflow.com/questions/65734

  •  09-06-2019
  •  | 
  •  

Question

Ce lien décrit un exploit dans mon application à l'aide de fckEditor: http://knitinr.blogspot.com/2008/07/ script-exploit-via-fckeditor.html

Comment sécuriser mon application tout en utilisant fckEditor? Est-ce une configuration fckEditor? Est-ce un traitement que je suis supposé faire côté serveur après avoir récupéré le texte de fckEditor?

C’est un casse-tête car fckEditor USES utilise des balises HTML pour sa mise en forme. Par conséquent, je ne peux pas simplement encoder le code HTML lorsque je réaffiche le texte.

Était-ce utile?

La solution

Sanitize html côté serveur, aucun autre choix. Pour PHP, il s'agirait du purificateur HTML , pour .NET, je ne sais pas. Il est difficile de désinfecter le code HTML - il ne suffit pas de supprimer les balises de script, vous devez également vous méfier des gestionnaires d'événements * et bien plus encore, grâce aux stupidités d'Internet Explorer par exemple.

Également avec les formats HTML et CSS personnalisés, il est facile de détourner le look et la présentation de votre site - en utilisant la superposition (position absolue) qui couvre tout l'écran, etc. Soyez préparé à cela.

Autres conseils

Le bogue n’est pas réellement l’erreur de FCKeditors. Tant que vous laissez les utilisateurs modifier le code HTML qui sera affiché sur votre site Web, ils auront toujours la possibilité de faire du mal, à moins que vous ne vérifiiez les données avant de les exporter.

Certaines personnes utilisent HTMLencoding pour faire cela, mais cela détruira tout le formatage effectué par FCKeditor, pas ce que vous voulez.

Peut-être pouvez-vous utiliser la bibliothèque de scripts de site antitransverses de Microsoft Exemples sur MSDN

  

Est-ce un traitement que je suis supposé effectuer côté serveur après avoir récupéré le texte de fckEditor?

Précisément. StackOverflow a également rencontré quelques problèmes précoces. Le moyen le plus simple de le résoudre consiste à utiliser une bibliothèque HTML pour analyser les entrées de l'utilisateur, puis échapper aux balises non souhaitées dans la sortie. Faites ceci comme une étape de post-traitement lors de l’impression sur la page - les données de la base de données doivent être exactement les mêmes que celles saisies par l’utilisateur.

Par exemple, si l'utilisateur entre <b><script>evil here</script></b>, votre code sera traduit en <b>&lt;script&gt;evil here&lt;/script&gt;</b> avant le rendu de la page.

Et n'utilisez pas d'expressions régulières pour résoudre ce problème, ce n'est qu'une invitation à quelqu'un d'intelligent pour le rompre à nouveau.

FCKEditor peut être configuré pour n’utiliser que quelques balises. Vous aurez besoin de tout encoder sauf ces quelques balises.

Ces balises sont les suivantes: < strong > < em > < u > < ol > < ul > < li > < p > < blockquote > < font > < span >.

La balise de police uniquement doit avoir les attributs face et taille. La balise span ne doit avoir qu'un attribut de classe.

Aucun autre attribut ne devrait être autorisé pour ces balises.

  

Je comprends les DONS. Il me manque un DO.

L'utilisation de FCKEditor est-elle requise ou pouvez-vous utiliser un autre éditeur / langage de balisage? Je conseille d'utiliser Markdown et WMD Editor, le même langage que celui utilisé par StackOverflow. La bibliothèque Markdown pour .NET devrait avoir une option pour échapper à toutes les balises HTML - assurez-vous de l'activer.

XSS est une chose délicate. Je suggère quelques lectures:

Quoi qu’il en soit, mon résumé est qu’au fond, il ne faut autoriser que les articles strictement acceptés; vous ne pouvez pas rejeter les vecteurs d’exploitation connus car vous serez toujours derrière la lutte éternelle.

Je pense que le problème soulevé par certains n’est pas que Fckeditor n’encode que quelques balises. Il s’agit là d’une hypothèse naïve selon laquelle un utilisateur malveillant utilisera l’éditeur Fckeditor pour écrire sa malveillance. Les outils permettant de modifier manuellement les entrées sont légion.

Je traite toutes les données utilisateur comme étant corrompues; et utilisez Markdown pour convertir le texte en HTML. Il supprime tout code HTML trouvé dans le texte, ce qui réduit les malveillances.

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