【Rails】SameSite와 Secure 속성 부여 ~Rails의 보안 대책~

3177 단어 루비Rails보안

소개



사내에서 쿠키의 보안에 관한 공부회가 있었으므로, 배운 것을 정리해 둡니다~~
Rails는 우수한 프레임워크이므로, 적당한 보안 대책이 표준 장비되어 있지요.
보안에 대해서는 그다지 생각하지 않아도, 구현할 수 버립니다군요.
좋은 일이거나 나쁜 것입니다.

GoogleChrome80 출시



2020년 2월 4일(현지 시간)에 Google Chrome 80이 공식적으로 출시되었습니다.
ぇぺぺぺrs-jp. 오 g b b g. 코 m / 2019 / 11 / 코오키에 - 죄송합니다. HTML
이번 버전 업에서 기본 쿠키의 SameSite 속성이 None⇒Lax로 변경되었습니다.
또한 SameSite 속성을 None으로 하는 경우 Secure 속성을 부여해야 하는 사양이 되었습니다.

? ? ?
뭐야? ?

나도 핀과 오지 않았고, 잘 모르는 분도 있을지도 모르기 때문에, 싹둑 해설합니다.

SameSite 속성



SameSite 속성은 CSRF(cross-site request forgery)라는 사이버 공격으로부터 사용자를 보호하기 위해 쿠키에 부여되는 속성입니다.
안전을 위한 쿠키 옵션 설정처럼 생각해 보세요.

GoogleChrome80에서 이 기본값이 None⇒Lax로 변경되었습니다.
간단히 말하면 보안이 강화되었다는 것입니다.
최근 구글은 보안 대책에 힘들어요~

SameSite 속성은 세 단계로 나뉩니다.


속성
내용


None
도메인을 통해 쿠키를 전달할 수 있습니다.

Lax
(GET에서 요청 전용) 도메인을 통해 쿠키를 전달할 수 있습니다.

Strict
도메인을 통해 쿠키를 전달할 수 없음


보안 수준으로
None < Lax < Strict 이군요.

즉, 도메인을 넘어 쿠키를 전달할 수 있습니까? 할 수 없습니까? 라는 차이를 설정하는 설정입니다!

secure 속성



Secure 속성은 HTTPS화되지 않은 쿠키의 동작을 제어하는 ​​속성입니다.
Secure 속성이 부여된 쿠키는 HTTPS 통신의 경우에만 보낼 수 있습니다.
요점은 쿠키가 도난당하기 어렵습니다.

Google Chrome80부터는 SameSite가 None일 때 Secure 속성을 부여해야 하는 사양으로 변경되었습니다.

즉 「SameSite가 None이겠지? 보안 불안이기 때문에 적어도 Secure 속성 정도 붙여 두어라~」라고 하는 Google님으로부터의 도달이라고 하는 것이군요.

Rails에서 설정



그럼 GoogleChrome80의 사양도 SameSite 속성·secure 속성도 이해한 곳에서, Rails로 설정을 해 봅시다!

Gemfile
gem 'rails_same_site_cookie'

터미널
bundle install

네. 이것뿐입니다.

특히 설정 등도 필요 없습니다. gem "rails_same_site_cookie"를 설치하기만 하면 됩니다.
정말 쉽습니다.
자동으로 모든 쿠키에 SameSite = None; Secure 속성이 추가됩니다.

확인 방법



확인 방법도 간단합니다.
크롬 확인에서 애플리케이션을 클릭하여 사용 중인 쿠키 내용을 확인합니다.
secure 속성에 체크가 들어 있고 SameSite 속성이 None이 되어 있으면 OK입니다.



※로컬 환경에서는 확인할 수 없는 경우가 있으므로 주의해 주세요~

결론



공부회에서 터무니없는 해커를 만나 버렸기 때문에 매일 떨면서 개발하고 있습니다

좋은 웹페이지 즐겨찾기