2010-03-01 12 views
8

Me gustaría permitir a los usuarios que dejen comentarios de texto enriquecido, posiblemente usando el marcado. He instalado las bibliotecas usadas en Reddit, pero estoy preocupado por el ataque de inyección de JavaScript que ocurrió el año pasado, especialmente porque todavía no tengo claro los detalles de cómo se realizó el ataque. ¿Debo seguir preocupado por la seguridad de los comentarios? ¿Hay una cadena de prueba que pueda poner en mi sistema para verificar los mismos defectos que quitaron Reddit?Secure Python Markdown Library

Respuesta

4

Python-Markdown - el "estándar" uno más o menos - tiene una función de 'modo seguro' que escapa a las etiquetas html. Eso debería ser suficiente para contrarrestar la mayoría de los ataques de inyección HTML.

4

reddit usa el discount markdown library ahora.

+0

Estoy trabajando en un entorno python puro (motor de la aplicación google) así que no creo que pueda usar una biblioteca C. Estoy mirando el Scavenger de la biblioteca mencionado anteriormente, y también estoy mirando el código filters.py y markdown.py de reddit. La biblioteca freewisdom está * destinada * a ser lanzada en otro proyecto, mientras que obviamente usted tenía la intención de que el código reddit funcionara en reddit, por lo que me inclina hacia el código de libre navegación. Por otro lado, tengo curiosidad acerca de por qué tenía que escribir su propio código de filtro en primer lugar. ¿Hay vulnerabilidades en las bibliotecas de acceso público de las que debería tener conocimiento? – MichaelBlume

2

Las otras respuestas mencionan el modo seguro de Python-Markdown pero ahora está en desuso. Los autores de Python-de rebajas han sido citado diciendo:

"modo seguro" era una mala elección nombre que seguimos utilizando para atrás comparabilidad (Código de edad todavía trabaja con nuestras versiones más recientes). Lo que realmente es es un modo sin marcas. En otras palabras, es solo una manera de rechazar el html crudo y realmente no garantiza la seguridad.

Ahora recomiendan utilizar un sanitizador HTML como Bleach para desinfectar la salida de reducción. mdx_bleach es una extensión Python-Markdown que hace precisamente eso. Descargo de responsabilidad: soy el autor de esta extensión.

Dado que utiliza html5lib para analizar fragmentos de documentos de la misma manera que lo hacen los navegadores, Bleach es extremadamente resistente a los ataques desconocidos, mucho más que los desinfectantes basados ​​en expresiones regulares.