programing

Rails 세션의 현재 사례

nasanasas 2020. 9. 24. 07:55
반응형

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_tokensecret_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

반응형