2009-10-24 2 views

답변

6

레일에 매스를 지정하면 User.new(:name => "David", :occupation => "Code Artist")과 같은 것을 사용하여 한 번에 한 행에 대한 모든 값을 설정할 때입니다. 이 코드를 User.new(params[:user])과 같이 변경하면 위험이 초래됩니다. 이제 최종 사용자가 매개 변수로 전달 된 해시를 악의적으로 조작하여 User.new에 넣고 예상치 못한 변수를 설정할 수 있습니다. 따라서 attr_accessibleattr_protected의 필요성으로 인해 최종 사용자가 직접 영향을 미칠 수있는 필드를 설정할 수 없게됩니다.

1

ActiveRecord의 기본 동작 중 일부는 취약점이 있습니다. 특히 사용자가 제출 한 양식에서 자동으로 속성을 업데이트하는 경우 mass updating can expose vulnerabilities. 내 생각 엔 대량 업데이트라는 용어가이 ActiveRecord 기능의 편의성과 취약점을 모두 다루는 핸들로 대중화되었다는 것입니다.

2

기본적으로, 대량 할당하지 않고,이 같은 모델을 만들 것입니다 :

user = User.new 
user.first_name = params[:user][:first_name] 
user.last_name = params[:user][:last_name] 

대량 과제와 모델 자체가 그 세터 전화를 알아낼 것입니다 그리고 당신이 할 필요가

user = User.new(params[:user]) 
입니다

그렇습니다. 그것은 한 가지 방법으로 많은 변수를 설정하는 것입니다.

관련 문제