Rails 세션의 현재 사례
누구든지 Rails 및 세션에 대한 "모범 사례"팁이 있습니까? Rails 3의 기본 세션 유형은 여전히 CookieStore입니다. 나는 한동안 SqlSessionStore를 사용했고 잘 작동했지만 CookieStore를 선호하는쪽으로 이동할 수 있습니다.
민감한 정보에 대해 CookieStore를 사용하는 것은 여전히 좋은 생각이 아닌가?
매우 기밀 정보를 저장하는 데 사용해서는 안되는 쿠키 기반 기본값 대신 세션에 데이터베이스를 사용합니다.
다음을 사용하여 세션 테이블 만들기
rake db:sessions:create
마이그레이션 실행
rake db:migrate
또한 레일에 ActiveRecord를 사용하여 세션을 관리하도록 지시하십시오.
레일스 3
config / initializers / session_store.rb :
Rails.application.config.session_store :active_record_store
레일스 2
config / environment.rb :
config.action_controller.session_store = :active_record_store
쿠키는 Rails 4에서 기본적으로 암호화됩니다.
Rails 4에서 CookieStore 쿠키는 기본적으로 암호화되고 서명됩니다.
당신은 단지 한 경우
secret_token
설정, 쿠키 서명했으나 암호화되지 않습니다. 즉, 사용자는user_id
앱의 비밀 키를 모르면 변경할 수 없지만 쉽게 읽을 수 있습니다user_id
. 이것은 Rails 3 앱의 기본값입니다.
secret_key_base
설정 한 경우 쿠키가 암호화됩니다. 이는 사용자가 암호화 된 쿠키를 변경하거나 읽을 수 없다는 점에서 서명 된 쿠키보다 한 단계 더 나아갑니다. 이것은 Rails 4에서 시작하는 기본값입니다.당신이 모두있는 경우
secret_token
와secret_key_base
세트를, 쿠키 암호화, 서명 레일 3에 의해 생성 된 쿠키를 투명하게 읽고 업그레이드 경로를 원활하게 제공하기 위해 암호화됩니다됩니다.
레일스 4에서 액티브 레코드 세션 스토어가 더 이상 사용되지 않음
이 답변 은 이제 Rails 4와 관련하여 오래되었습니다. Active Record Session Store는 더 이상 사용되지 않으며 Rails에서 제거되었으므로 다음 생성기는 더 이상 작동하지 않습니다.
rake db:sessions:create
rails generate session_migration
이것은 이 답변 에서 지적되었습니다 . Active Record Session Store가 더 이상 사용되지 않는 이유는 이 블로그 게시물에 설명 된대로 애플리케이션에 액세스하는 사용자가 많을 때 데이터베이스에 대한 읽기 / 쓰기가 제대로 확장되지 않기 때문입니다 .
... 액티브 레코드 세션 저장소의 한 가지 주요 문제는 확장 가능하지 않다는 것입니다. 데이터베이스에 불필요한 부하를가합니다. 애플리케이션이 많은 양의 트래픽을 수신하면 세션 데이터베이스 테이블에 읽기 / 쓰기 작업이 계속해서 쏟아집니다.
Rails 4부터 Active Record 세션 저장소가 핵심 프레임 워크에서 제거되었으며 이제 더 이상 사용되지 않습니다.
Active Record Session Store를 계속 사용하고 싶다면 여전히 gem으로 사용할 수 있습니다 .
현재 Rails 세션 모범 사례
Ruby on Rails 세션에 대한 최신 모범 사례를 보려면 Ruby on Rails 보안 가이드 의 최신 버전을 확인하는 것이 좋습니다 .
나는 어떤 플랫폼의 누구라도 쿠키 기반 세션을 처리하는 방식에 변화가 없다고 생각합니다. 서버의 통제를 벗어난 모든 것에 회의하십시오 (쿠키, 양식 게시물 등). 이것이 웹 개발의 일반적인 원칙입니다.
암호화에 관해서는 그 전면에서 변경된 사항이 있는지 모르겠습니다.
쿠키 저장소에서 염두에 두어야 할 사항은 데이터 양의 제한이며,이 데이터는 모든 요청에서 유선으로 전송된다는 점입니다. 데이터베이스 저장소는 ID 만 전송하고 데이터는 서버에 있습니다. .
FWIW, 레일 3.1은 실행을 제안합니다.
rails generate session_migration
그러나 이것은 다음과 똑같은 마이그레이션을 생성합니다.
rake db:sessions:create
Rails 기본값은 나에게 꽤 좋은 것 같습니다. CookieStore는 빠르며 대부분의 사용 사례를 다루어야합니다. 확실히 당신은 4kb로 제한되고 당신의 데이터는 사용자에게 보일 것입니다. 그러나 Rails 방식은 정수 ID 및 기본 문자열 값과 같은 것들에 대해서만 세션을 사용하는 것입니다-세션에 객체 또는 매우 기밀 정보를 저장하려는 경우 당신은 아마 그것을 잘못하고있을 것입니다.
참고 URL : https://stackoverflow.com/questions/2588241/rails-sessions-current-practices
'programing' 카테고리의 다른 글
애플리케이션에 유효한 'aps-environment'자격 문자열이 없습니다. (0) | 2020.09.24 |
---|---|
Eclipse에서 단일 JUnit 테스트 실행 (0) | 2020.09.24 |
R에서 행렬의 역 (0) | 2020.09.24 |
pip가 패키지를 올바르게 설치할 수 없음 : 권한 거부 오류 (0) | 2020.09.24 |
Go 선언에서“_,”(밑줄 쉼표)는 무엇입니까? (0) | 2020.09.24 |