누구든지 Rails 및 세션에 대한 "모범 사례"팁이 있습니까? Rails 3의 기본 세션 유형은 여전히 CookieStore입니다. 나는 한동안 SqlSessionStore를 사용했고 잘 작동했지만 CookieStore를 선호하는 것으로 이동할 수 있습니다.
민감한 정보에 대해 CookieStore를 사용하는 것은 여전히 좋은 생각이 아니고, 심지어 소금 정보가있는 경우에도 DB에 더 잘 저장됩니까?
누구든지 Rails 및 세션에 대한 "모범 사례"팁이 있습니까? Rails 3의 기본 세션 유형은 여전히 CookieStore입니다. 나는 한동안 SqlSessionStore를 사용했고 잘 작동했지만 CookieStore를 선호하는 것으로 이동할 수 있습니다.
민감한 정보에 대해 CookieStore를 사용하는 것은 여전히 좋은 생각이 아니고, 심지어 소금 정보가있는 경우에도 DB에 더 잘 저장됩니까?
답변:
매우 기밀 정보를 저장하는 데 사용해서는 안되는 쿠키 기반 기본값 대신 세션에 데이터베이스를 사용합니다.
다음을 사용하여 세션 테이블 만들기
rake db:sessions:create
마이그레이션 실행
rake db:migrate
또한 레일에 ActiveRecord를 사용하여 세션을 관리하도록 지시하십시오.
config / initializers / session_store.rb :
Rails.application.config.session_store :active_record_store
config / environment.rb :
config.action_controller.session_store = :active_record_store
rake db:sessions:create
이 많은 사용자와 애플리케이션을위한 확장 성이 좋지 않기 때문에, 레일 4에서 사용되지 및 제거 (너무 많은 데이터베이스는 읽기 및 쓰기). rails 4.0, rake db : sessions : create를 참조하십시오 .
Rails 4에서 CookieStore 쿠키는 기본적으로 암호화되고 서명됩니다.
당신은 단지 한 경우
secret_token
설정, 쿠키 서명했으나 암호화되지 않습니다. 즉, 사용자가user_id
앱의 비밀 키를 모르면 변경할 수는 없지만 쉽게 읽을 수 있습니다user_id
. 이것은 Rails 3 앱의 기본값입니다.
secret_key_base
설정 한 경우 쿠키가 암호화됩니다. 이는 사용자가 암호화 된 쿠키를 변경하거나 읽을 수 없다는 점에서 서명 된 쿠키보다 한 단계 더 나아갑니다. 이것은 Rails 4에서 시작하는 기본값입니다.당신이 모두있는 경우
secret_token
와secret_key_base
세트를, 쿠키 암호화, 서명 레일 3에 의해 생성 된 쿠키를 투명하게 읽고 업그레이드 경로를 원활하게 제공하기 위해 암호화됩니다됩니다.
이 답변 은 이제 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으로 사용할 수 있습니다 .
Ruby on Rails 세션에 대한 최신 모범 사례를 보려면 Ruby on Rails 보안 가이드 의 최신 버전을 확인하는 것이 좋습니다 .
FWIW, 레일 3.1은 실행을 제안합니다.
rails generate session_migration
그러나 이것은 다음과 똑같은 마이그레이션을 생성합니다.
rake db:sessions:create
db:sessions:create
이제 session_migration
생성기를 직접 호출합니다 . task : create => : environment는 ActiveRecord :: Base.connection.supports_migrations가 아니면 "이 데이터베이스에 사용할 수없는 작업 (마이그레이션 지원 없음)"을 발생합니까? 'rails / generators'가 필요합니다 Rails :: Generators.configure! 'rails / generators / rails / session_migration / session_migration_generator'필요 Rails :: Generators :: SessionMigrationGenerator.start [ENV [ "MIGRATION"] || "add_sessions_table"] end
rake db:sessions:create
그리고 rails generate session_migration
그들은 많은 사용자와 애플리케이션을위한 확장 성이 좋지 않기 때문에 발전기는, 레일 4에서 사용되지 및 제거 (너무 많은 데이터베이스는 읽기 및 쓰기). rails 4.0, rake db : sessions : create를 참조하십시오 .