Pregunta

¿Cuál es la mejor solución para desinfectar el HTML de salida en Rails (para evitar ataques XSS)?

Tengo dos opciones: white_list plugin o sanitize método de Sanitize Helper http: //api.rubyonrails.com/classes/ActionView/Helpers/SanitizeHelper.html . Para mí, hasta hoy, el plugin white_list funcionó mejor y, en el pasado, Sanitize tenía muchos errores, pero como parte del Core, probablemente esté en desarrollo y sea soportado por un tiempo.

¿Fue útil?

Solución

Creo que el método h helper funcionará aquí:

<%= h @user.profile %>

Esto evitará los paréntesis angulares y, por lo tanto, neutralizará cualquier JavaScript incrustado. Por supuesto, esto también eliminará cualquier formato que sus usuarios puedan usar.

Si desea formatear, quizás busque en markdown.

Otros consejos

Personalmente, creo que no es una decisión pequeña aceptar cualquier entrada HTML en cualquier aplicación web. Puede probar las etiquetas de lista blanca / negra todo lo que quiera, pero a menos que esté probando el anidamiento correcto, alguien podría ingresar una serie de etiquetas de cierre, por ejemplo,

</td></tr></span></div>

y realmente desordenar con su diseño.

Por lo general, le doy a la gente algo como Textile para que ingrese su marca, ya que prefiero dedicar mi tiempo a trabajar en la lógica de negocios que al análisis de HTML.

Por supuesto, si esta entrada de texto es más fundamental para su aplicación (como, por ejemplo, es para stackoverflow), probablemente debería prestar más atención a hacer rodar su propia mano.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top