ruby-on-rails-4 sanitize difference html-safe

ruby on rails 4 - Ruby on Rails: diferencia entre.html_safe y sanitize()



ruby-on-rails-4 difference (1)

Tengo dos piezas de código en mi opinión:

<%= sanitize(''<h3>winter</h3>'') %> <%= ''<h3>winter</h3>''.html_safe %>

Y ambos parecen dar como resultado la codificación de etiquetas html en una cadena proporcionada. ¿Cuál es la diferencia entre ellos y cuándo debería usar cualquiera?


(volviendo a mi propia pregunta después de un año de aprendizaje de rieles :-))
Esos son dos métodos muy diferentes.

a = a.html_safe simplemente marcará la cadena a como ''html_safe'' y la tratará como tal después (Marcar una cadena como segura de confianza. Se insertará en HTML sin realizar escapes adicionales. Es su responsabilidad asegurarse de que la cadena contenga no hay contenido malicioso. Este método es equivalente al ayudante raw formato en las vistas. Se recomienda utilizar sanitize lugar de este método. Nunca se debe invocar a la entrada del usuario) .

a.sanitize , por otro lado, html codifica todas las etiquetas y elimina todos los atributos que no están específicamente permitidos (puede agregar / eliminar etiquetas y atributos permitidos si lo desea). Tenga en cuenta que la entrada del usuario se desinfecta por defecto a menos que permita específicamente html-markup con raw ( http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/raw ), que, dicho sea de paso, utiliza html_safe para marcarlo como tal .