Acabo de empezar a utilizar la herramienta brakeman para explorar mi aplicación de raíles por vulnerabilidades de seguridad.Cómo asegurar link_to @variable cross site scripting vulnerabilities
He logrado que todo esté ordenado, excepto por varias advertencias de secuencias de comandos de sitios cruzados.
Todos ellos comparten en común lo siguiente:
- Están todas las etiquetas link_to
- Todos ellos tienen las variables de instancia de la clase, alt o título atributos
- Las variables de instancia toda representar una consulta de registro activo que incluye los modelos asociados
- Las variables de instancia son todas "commentables". Esto describe una asociación polimórfica para comentarios generados por el usuario, similar en enfoque a la versión revisada de this Railscast.
por ejemplo
<%= link_to "Click" , :class=> @model.association.attribute, :alt=> @model.association.attribute, :title=> @model.association.attribute, @model.association %>
donde
@model = @commentable = Model.includes(:association1, association2: {:nested-association1, :nested-association2}).find(params[:id])
Es esto algo que tengo que estar preocupado/tomar medidas para? Pensé que Rails 3.2 escapa a estos por defecto.
Me gustaría recibir consejos para ayudarme a comprender mejor este problema e identificar los pasos que debo seguir, si corresponde.
gracias por su respuesta Justin. Después de haber analizado nuevamente el error, también he notado que todas son sentencias 'includes' complejas (es decir, varios modelos, algunos de los cuales están anidados). Además (y quizás esta es la causa) todos son "commentables". Actualizaré mi pregunta con más detalle. –
quizás refactorizando mi '@model = @commentable = ARquery' a dos líneas podría resolver esto? Pero todavía no estoy seguro de entender por qué esto es un problema. ¿Los Rails no escaparán por defecto?Aprecie cualquier consejo para ayudarme a mejorar mi comprensión. –
Respuesta actualizada a la luz de esta nueva información. Parece que dividir en dos líneas resuelve el problema, que es un error en Brakeman. – Justin