레일스의 쿠키에 작은 데이터 (10 자 미만)를 저장해야하며 보안이 필요합니다. 나는 그 누구도 데이터 조각을 읽거나 자신의 데이터 조각을 삽입 할 수 없기를 바란다. 쿠키의 내용을 암호화하는 것은 갈 길이라고 생각합니다 (서명해야합니까?). 가장 좋은 방법은 무엇입니까?Rails로 암호화 된 쿠키 저장하기
지금 당장이 작업을 수행합니다. 보안 성이 뛰어나지 만 보안에 대한 것보다 훨씬 많은 것을 알고 많은 사람들이 보안에 취약한 것으로 밝혀졌습니다.
나는 이런 식으로 비밀 절약 해요 :
encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
cookies[:secret] = {
:value => encryptor.encrypt(secret),
:domain => "example.com",
:secure => !(Rails.env.test? || Rails.env.development?)
}
을 한 후 나는이처럼 읽고 있어요 :
encryptor = ActiveSupport::MessageEncryptor.new(Example::Application.config.secret_token)
secret = encryptor.decrypt(cookies[:secret])
보안인가요? 그것을하는 더 나은 방법?
업데이트 : 나는 레일 '세션에 대해 알고는 쿠키에 서명함으로써 선택적으로 세션 서버 측의 내용을 저장하고 나는 그것을 위해 무엇인지에 대한 세션을 사용합니까 모두에 의해, 보안 방법. 하지만 여기 내 질문은 세션에 원하지 않는 정보 인 쿠키를 저장하는 것이지만 여전히 보안이 필요합니다.
왜, 정의상보다 안전한 서버 측이 아닌 쿠키에 저장해야하는 이유는 무엇입니까? – Russell
@russell 글쎄 브라우저에 무엇인가를 저장해야합니까? 그렇지 않으면 다시 식별 할 수 없습니다. 테이블의 실제 데이터 또는 레코드의 ID 여부에 관계없이 데이터 크기 및 기타 고려 사항에 대한 선호도 및 필요성이 중요합니다. 내가 저장하고있는 것은 이미 테이블에있는 레코드의 ID입니다. 다른 테이블을 만들 수도 있지만이 경우에는 낭비처럼 보입니다. – Pablo
DB를 사용하기 위해 기본 세션 저장소를 변경하면 테이블 생성과 관련하여 매우 적은 오버 헤드로 원하는 보안을 제공 할 것이라고 생각하므로 답변을 추가했습니다. – Russell