2016-08-01 2 views
0

대량 할당은 응용 프로그램이 해시 값을 사용하여 레코드를 만들 수있게 해주는 레일스의 기능입니다. 발생할 수있는 두 가지 질량 할당 경고가 있습니다. 첫 번째는 질량 할당이 실제로 발생하는 경우입니다. 예 : -대량 할당에 대한 거짓 경고는 model.new 및 model.update_attibutes 및 model.create의 Brakeman Gem에서 throw됩니다.

User.new(params[:user]) 

표에서 사용할 수있는 필드와 매핑하기 위해 직접 해시를 사용하지 않지만.

User.new(:first_name => params[:first_name], :last_name => params[:last_name ], :address => params[:address]) 

또는

user.update_attributes(:first_name => params[:first_name], :last_name => params[:last_name ], :address => params[:address]) 

왜 이것이 대량 할당 취약점을 선도하고 대신 내가 좋아하는 일을하고 있어요? 맹목적으로 해시를 지정하지 않으므로 표의 속성 중 일부만 선택적으로 업데이트하고 있습니다.

user = User.new 
user.first_name = params[:first_name] 
user.last_name = params[:last_name ], 
user.address = params[:address] 
user.save 

하지만이 동수가 문제로 경고되지 않도록, 불필요한 코드를 작성 같다 : 이것에 대한

한 수정 프로그램은 다음을 수행하는 것입니다. 이것은 실제로 한 줄 대신에 4 줄로 똑같은 일을합니다.

누군가가 나를 실제 문제가 무엇인지 여기에 알리거나 이것이 허위 경보임을 확인하고이 허위 경보가 나타나지 않도록 할 수 있습니까? 내가 루비 1.8.7를 사용하고

은, accepts_nested_attributes_for에 의한 값으로 대량 할당 문제가있을 수 있습니다, 동수 3.0.5

답변

0

을 2.3.2 레일. 그러나 을 사용하지 않을 경우 이는 아마 거짓 긍정입니다.

Notice Brakeman은이 코드에 대해 "약한"신뢰 경고를 반환합니다. 대부분의 Brakeman의 "약한"신뢰도 경고와 마찬가지로, 코드를 살펴 봐야하지만 아마도 문제는 아닙니다.

Brakeman's ignore configuration을 사용하여 가양 성을 무시할 수 있습니다. Brakeman을 실행하여 약한 신뢰도 경고를 무시할 수도 있습니다 (-w 2). -x MassAssignment으로 대량 할당 경고를 끄는 것도 가능하지만 고대의 (아마도 매우 취약한) 버전의 Rails를 실행하고 있기 때문에 추천하지 않습니다.

+0

감사합니다. @ 재 스틴. –