2009-10-24 4 views
0

이 코드를 가지고 인증 시스템을보고했다 : 이러한 속성에 적용되는 이유 attr_accessibleattr_accessible은 사용자 관련 속성에 적용되어 사용자 데이터 위조를 방지합니까?

# prevents a user from submitting a crafted form that bypasses activation 
    # anything else you want your user to change should be added here. 
    attr_accessible :login, :email, :password, :password_confirmation, :first_name, :last_name 

내가 이해가 안 돼요.

사용자가 양식을 조작하여 사용자 데이터를 조작하지 못하도록 주석이 올바 릅니까? 그렇다면 왜?

답변

1

attr_accessible은 질량 할당을 통해 어떤 속성에 액세스 할 수 있는지 나타냅니다. 컨트롤러에 대용량 할당 작업을 수행하고이 방법을 사용하지 않은 경우 사용자는 변경하지 못하게하려는 데이터를 변경할 수 있습니다.

이 경우 사용자는 부울 activated 필드에 POST 양식에 매개 변수를 추가하여 정품 인증을 무시할 수 있으므로 합법적 인 전자 메일 주소가 있는지 확인하지 않고 사용자를 만들 수 있습니다. (activated이라고 가정합니다.) 시스템에 댓글 스팸과 같은 가능성이있는 경우 큰 문제가됩니다.

API documentation for attr_accessible

0

무엇 attr_accessible 정말 보호 다른 속성을하고하고있다. 그것은 attr_protected 매크로의 반대입니다. Rails는 thing= 메서드를 자동으로 생성하므로 attr_protected은 허용 된 버전 인 attr_accessible보다 사용하기가 어렵습니다.

아이디어는 URL과 양식을 조작하는 사용자의 민감한 필드를 보호하는 것입니다.

+0

그래,'attr_protected' 메소드로 훨씬 더 명확 해지 겠지만 화이트리스트는 항상 블랙리스트보다 더 좋은 아이디어이다. –

관련 문제