2012-11-14 1 views
0

내 레일 응용 프로그램의 기능 구현에 대한 보안이 걱정됩니다.대량 할당 보안 위험없이 양식을 통해 외래 키를 다른 컨트롤러로 전달

두 모델, Assessments & AssessmentAttempts 있습니다.

평가 표시보기는 양식 (객관식 테스트 양식)을 표시하지만 데이터는 user_id, assessment_id 및 사용자의 선택 사항을 테스트에 기록한 평가보다는 AssessmentAttempts 컨트롤러로 전송됩니다.

현재 사용자의 ID는 양식의 일부로 제출되지 않았지만 현재 evaluation_id를 숨겨진 필드 (예 :/assessment/1 URL에서 가져옴)로 제출합니다.

수정해서는 안됩니다. 사용자가 해당 값을 변경할 수 없거나 다른 테스트 문제와 관련이 있습니다.

숨겨진 필드를 사용하는 것보다 assessment_id를 AssessmentAttempts 컨트롤러로 가져 오는 더 좋은 방법이 있습니까?

감사합니다.

답변

1

데이터베이스의 AssessmentAttempt에 대한 초기 항목을 만들 수 있습니다. AssessmentAttempt에 고유 토큰 열을 지정하고이를 사용하여 사용자 테스트를 양식의 숨겨진 필드로 유효성을 검사합니다.

예 :

token = SecureRandom.base64.tr("+/", "-_") 

좋은 소식 : 빈 행 데이터베이스의 : 당신이 불완전한 시도의 역사와 몇 가지 여분의 크로스 사이트 보호

나쁜 소식이있다.

관련 문제