2023. 1. 26. 13:17ㆍBackup
https://yozm.wishket.com/magazine/detail/1852/
https://yozm.wishket.com/magazine/detail/1862/
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
위 글들을 제나름의 정리 & 백업하기 위한 목적의 글 입니다.
또한 제가 이해한 형태로 재가공 하여 게재하오니, 되도록이면 원문의 글을 참조 부탁드립니다.
제가 작성한 글 중, 잘못된 부분이 있다면 이유와 함께 고견 부탁드립니다.
HTTP / HTTPS 의 차이
평문 / 암호화
인터넷 콘텐츠를 전달하는 tcp 프로토콜의 일종인 http + s(secure) => https
HTTPS 는 100퍼 안전할까?
-> no
전달 구간(http)에 대한 보안기술이므로, 중간자 공격을 수행할 수 있는 취약점 있다면, 내용 노출의 위험성 잔존.
(https://hacks.mozilla.org/2010/08/firefox-4-http-strict-transport-security-force-https/)
In the future, any requests to x.com are modified to be via https if they are attempted through http before the request hits the network.
This header is not considered during a non-encrypted HTTP transaction because the User-Agent doesn’t know if the https actually exists and also because the header can be injected by an attacker.
따라서
인스턴트 메시징과 같은 대화(개인간 대화)에서는 https 를 적용.
종단간 암호화 (end to end encryption; E2EE)기술을 추가하여, 설령 https 가 무력화 되어도 노출된 데이터가 암호화를 유지하는 방법이 일반적으로 쓰인다. (ex, 카카오톡, 텔레그램 , 클라우드 기술 등 )
최근에는 https://letsencrypt.org/ 나, 여타 퍼블릭 클라우드 제공사를 통해 무료 제공 인증서를 쉽게 사용할 수 있다.
https://www.rfc-editor.org/rfc/rfc6797
HTTP Strict Transport Security (HSTS)
HSTS 웹 사이트 접속시, 사용자로 하여금 HTTPS만 사용하도록 강제하는 기술 (지원하는 브라우저 사용시)
웹서버가 사용자를 https 로 유도하는데 사용되는 일반적인 방법
1 사용자가 http 방식으로, url을 브라우저 주소창에 입력 후 엔터 친다. 고고~
2 웹서버는 301, Permanently Moved or 302, Temporarily Moved로 응답한다. (일단 https://www.rfc-editor.org/rfc/pdfrfc/rfc6797.txt.pdf 여기 HSTS명세에는 301 만 나와있긴 함. 통용되는 방법은 302도 되는건지? 모르겠네요.)
// 301 Redirect
Response.RedirectPermanent(url, true);
// 302 Redirect
Response.Redirect(url, true);
닷넷이라면 대충 이렇게 넣어준다고 해보겠다. 그럼, 실사용자 뿐 아니라 크롤러 까지도 위의 url 로 리다이렉트 된 값을 수집할 수가 있겠다.
3 사용자의 브라우저는 HTTPS 방식으로 웹서버에 접속한다.
허나, 1번 단계에서 이미 사용자의 http 패킷을 캡처할 수 있고, 쿠키 값 혹은 세션 정보를 엿볼 수 있음에 유의해야한다.
HSTS를 적용하는 상세 방법
응답헤더에 Strict-Transport-Security 라는 헤더를 세팅해 보낸다.
이는 단순히, 301으로 리디렉션 구성하는 것보다 더욱 안전하다. 브라우저에게 HTTPS를 사용하라고 알리는 공식적인 방법이므로.
위 페이지는 HSTS가 헤더에 어떤식으로 세팅 되어있는지 확인시켜주는 웹 페이지 이다.
max-age=15552000 이므로 권장 연한보다 비교적 짧음을 알수있다.
preloaded 인 hsts 웹사이트 목록에 facebook 이 있음을 의미한다. 한마디로 크롬은 이미 이 페이지가 hsts 설정이 되어있는 것을 이미 알고 있다 고 보면 되겠다.
크롬에서는 이런식으로 확인할 수 있다. 크롬에 등록하는 형태로 미리 알리거나, 언젠가 알아서 수집도 될 것이다.
https://www.chromium.org/hsts/
네이버의 HSTS 적용주기는 63072000초. 730일이다. includeSubdomains 라는 옵셔널한 설정을 통해 하위 도메인 모두 HSTS 설정이 적용되어있다.
위에 자세히 기재한 세팅 방법이 있었지만, 사실 cdn에서 이리도 간단히 적용할 수 있기도 하다.
HSTS 한계
명세를 보니 꽤 오래되어 대부분의 현대 브라우저에서는 사용가능한 기능이다.
이 또한 위의 링크 중, ff 브라우저 개발자의 블로그글 하단의 담론에 의하면,
"http를 사용하는, 단순한 사용자"를 위한 기능일 뿐, 모든 부분에서의 보안기능이 될 수 없음을 알 수 있다. (당연하지만..!)
'Backup' 카테고리의 다른 글
인터랙티브 개발 (0) | 2023.08.29 |
---|---|
git 부분적으로 clone 하기 | sub directory (0) | 2023.08.29 |
chatGPT써보기 (0) | 2023.01.19 |
[퍼온글 백업] 브랜치 삭제 후, 동명의 브랜치 사용 가능한지 여부 (1) | 2023.01.17 |
CIDR 계산 방법 및 CIDR와 서브넷마스크 차이 (수정중) (0) | 2023.01.16 |