2010-03-01 7 views
8

Je souhaite que les utilisateurs puissent laisser des commentaires en texte enrichi, éventuellement en utilisant la fonction de démarquage. J'ai installé les librairies utilisées sur Reddit, mais je m'inquiète de l'attaque par injection javascript qui s'est produite l'année dernière, d'autant plus que je ne suis pas encore clair sur les détails de la façon dont l'attaque a été faite. Devrais-je encore être préoccupé par la sécurité des commentaires? Y at-il une chaîne de test que je peux mettre dans mon système pour vérifier les mêmes failles que reddit reddit?Bibliothèque de Markdown Python sécurisée

Répondre

4

Python-Markdown - le 'standard' plus ou moins - dispose d'une fonction 'mode sans échec' qui échappe aux balises html. Cela devrait suffire à contrer la plupart des attaques par injection HTML.

4

reddit utilise le discount markdown library maintenant.

+0

Je travaille dans un environnement python pur (google app engine) donc je ne pense pas pouvoir utiliser une bibliothèque C. Je regarde la bibliothèque Scavenger mentionnée ci-dessus, et je regarde aussi le code filters.py et markdown.py de reddit. La bibliothèque freewisdom est * destinée * à être droppée dans un autre projet, alors que de toute évidence vous vouliez que le code reddit fonctionne dans reddit, ce qui me penche vers le code freewisdom. D'un autre côté, je suis curieux de savoir pourquoi vous aviez besoin d'écrire votre propre code de filtre en premier lieu - y a-t-il des vulnérabilités dans les bibliothèques publiques dont je devrais être conscient? – MichaelBlume

2

Les autres réponses mentionnent le mode sans échec de Python-Markdown mais qui est maintenant obsolète. Les auteurs de Python-Markdown ont été cité en disant:

« safe-mode » était un choix pauvre nom que nous continuons à utiliser pour la comparabilité arrière (ancien code fonctionne toujours avec nos nouvelles versions). Qu'est-ce que c'est vraiment est un mode sans balisage. En d'autres termes, c'est juste un moyen d'interdire html brut et ne garantit vraiment pas la sécurité.

Ils recommandent maintenant d'utiliser un désinfectant HTML tel que Bleach pour assainir la sortie Markdown. mdx_bleach est une extension Python-Markdown qui fait exactement cela. Disclaimer: Je suis l'auteur de cette extension. Parce qu'il utilise html5lib pour analyser les fragments de document de la même manière que les navigateurs, Bleach est extrêmement résistant aux attaques inconnues, beaucoup plus que les désinfectants à base d'expressions régulières.