2011-08-10 3 views
7

프로젝트 용 인증 시스템을 구축 중입니다.레일 - 세션 용 쿠키 또는 액티브 레코드 저장소

  • 쿠키의 저장
  • 액티브 레코드 스토어 또한

에 대한 보안 문제가 무엇 : 저장 세션 정보에 권장되는 방법은 (난 그냥 다른 사용자의 ID 아무것도 저장하지 오전) 란 무엇입니까 중첩 된 양식을 사용하고 accepts_nested_attributes_for를 사용합니다.

알려 주시기 바랍니다.

미리 감사드립니다.

답변

4

레일스는 기본적으로 쿠키 저장소를 기본으로하므로 이동하는 방법이 중요합니다. 일반적으로 쿠키 저장소는 트래픽이 많은 사이트의 경우 특히 유용합니다. 세션에 중요한 업무를 저장하면 안됩니다 (사용자 ID 만 저장하는 경우).

그런 보안 사용에 관한 한 ... 너무 많다고 생각하지 않습니다. railscasts를 사용하여 위의 튜토리얼을 참조하십시오. 마음에 오는 것은 질량 할당 할 수있는 것을 제한하기 위해 attr_accessible을 사용하는 것일뿐입니다. 또한 CanCan은 필요한 경우 승인을위한 훌륭한 보석입니다.

+0

당신이 사용하는 세션 저장소에 관계없이이를 검색하는 모든 사람에게 관련된 쿠키가 있습니다. 차이점은 m 키가 세션 자체를 포함하는지 또는 데이터베이스에 저장된 세션과 연관시키는 불투명 식별자 만 포함하는지 여부 중 하나입니다. 두 경우 모두 보안이 중요하다면 이러한 종류의 쿠키 중 하나는 비보안 연결을 통한 전송 가능성을 막기 위해 "안전한"것으로 표시되어야합니다. 이는 세션 하이재킹의 가능성에 취약하게 만듭니다. –

+0

쿠키가 기본적으로 사용되는 경우 쿠키가 안전하다는 의미는 아닙니다. 그들은 더 빠르며, DB를 오염시키지 않지만 안전하지는 않습니다. – sekrett

0

하나의 ID 만 저장하는 경우 쿠키를 사용하십시오. AR 세션은 여전히 ​​요청을 세션과 연관시키기 위해 쿠키에 일종의 ID를 요구합니다.

6

쿠키 저장소를 사용할 때 확실히 보안 문제가 있습니다. 주된 문제점은 서버 측에서 CookieStore 세션을 종료 할 수 없다는 것입니다. 누군가가 쿠키에 액세스 할 수 있으면 쉽게 로그인 할 수 있습니다. 로그 아웃하고 새 쿠키로 새 세션을 시작한 경우에도 마찬가지입니다.

ActiveRecordStore는 최소한 데이터베이스에서 세션을 제거하여 세션을 무효화 할 수있는 기능을 제공합니다.

좋은 블로그 게시물입니다. http://www.bryanrite.com/ruby-on-rails-cookiestore-security-concerns-lifetime-pass/

+0

우수한 포인트. –