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
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.
reddit utilise le discount markdown library maintenant.
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.
- 1. PHP Markdown \ n Question
- 2. Comment valider Markdown?
- 3. Conversion markdown html côté client
- 4. Python: Comment convertir le texte au format markdown en texte
- 5. HTML à Markdown avec Java
- 6. i18n/Markdown - Markdown prend-il en charge l'internationalisation?
- 7. Chemin de la bibliothèque Python
- 8. Bibliothèque de serveurs Python XMPP
- 9. Chemin de la bibliothèque Python
- 10. sous-ensemble markdown
- 11. Réduit CKEditor Vs Markdown
- 12. Désactiver Markdown dans Rails?
- 13. Bibliothèque d'images Python 3.1
- 14. bibliothèque Python installation macports
- 15. bibliothèque vidéo python
- 16. Bibliothèque XQuery sous Python
- 17. Bibliothèque d'archivage python (jython)
- 18. Toute bibliothèque dhcp python?
- 19. bibliothèque Python nécessaire
- 20. Comment implémenter l'authentification sécurisée en utilisant xml-rpc en python?
- 21. Connexion sécurisée
- 22. Comment stocker les commentaires Markdown
- 23. eBay Markdown Manager via API
- 24. django.core.mail send_email avec connexion sécurisée
- 25. WMD Markdown et côté serveur
- 26. Quel langage de balisage? Markdown ou?
- 27. LHS et Markdown: blocs de code
- 28. Conversion de postes BBCode phpBB en Markdown
- 29. Quelle bibliothèque python mpi utiliser?
- 30. Yahoo BOSS Bibliothèque Python, ExpatError
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