¿Cómo transferir la 'identificación' de manera más segura en el proyecto Rails?

1

Revisé mi proyecto de rieles con un guardafrenos y recibí una advertencia.

  

Se permite una clave potencialmente peligrosa para asignación masiva :   params.require (: inspector_id)

class ReportsController < ApplicationController
  ...
  def report_params
    params.require(:report).permit(inspector_id, ...)
  end
end

class Report < ApplicationRecord
  belongs_to :inspector 
end

class Inspector < ApplicationRecord
  has_many :reports
end

¿Cómo transferir la identificación de forma más segura?

    
pregunta Igor Polyakov 18.12.2017 - 13:07
fuente

1 respuesta

1

Eso dependería de tu modelo de permisos. Tal como está, una llamada a update_attributes etc. permite que cualquier persona con permisos actualice un informe para vincular ese informe a cualquier inspector. Si esta no es una operación privilegiada en su aplicación, por ejemplo. Si todos sus usuarios tienen los mismos derechos y se supone que deben poder acceder a todos los registros en su base de datos, podría estar bien.

De lo contrario, tendría que comprobar si el usuario actual tiene permiso para establecer un enlace entre el informe especificado y el inspector. Cómo funciona esto depende, por supuesto, de su aplicación; Si quieres una buena forma de organizar tus permisos en un lugar central, te animo a que eches un vistazo al cancancan gem:

enlace

En cualquier caso, el problema no es la forma en que se transfiere la ID, sino que es posible que deba revisarlo antes de aceptarlo en su base de datos.

    
respondido por el Marc Schütz 18.12.2017 - 13:25
fuente

Lea otras preguntas en las etiquetas