티스토리 뷰
서론
- 6주의 실전프로젝트가 시작되었습니다.
일정
- api 완성
- https
- 타이머기능완성
- helmet, hpp 등 보안
실전프로젝트 프로젝트 1주차
- api 명세서 작성
이번 주차를 진행하며 내가 가장 신경쓴 부분/기술에 대한 정리
TLS
인터넷에서의 정보를 암호화해서 송수신하는 프로토콜. 넷스케이프 커뮤니케이션스사가 개발한 SSL(Secure Sockets Layer)에 기반한 기술로, 국제 인터넷 표준화 기구에서 표준으로 인정받은 프로토콜이다. TCP 443 포트를 사용한다. 표준에 명시된 정식 명칭은 TLS지만 아직도 SSL이라는 용어가 많이 사용되고 있다.
작동 방법
인터넷을 사용한 통신에서 보안을 확보하려면 두 통신 당사자가 서로가 신뢰할 수 있는 자임을 확인할 수 있어야 하며, 서로간의 통신 내용이 제 3자에 의해 도청되는 것을 방지해야 한다. 따라서 서로 자신을 신뢰할 수 있음을 알리기 위해 전자 서명이 포함된 인증서를 사용하며, 도청을 방지하기 위해 통신 내용을 암호화한다. 이러한 통신 규약을 묶어 정리한 것이 바로 TLS. 주요 웹브라우저 주소창에 자물쇠 아이콘이 뜨는 것으로 TLS의 적용 여부를 확인할 수 있다.
예를 들어 인터넷 뱅킹을 하기 위해 은행의 사이트에 방문했을 때, 고객은 그 사이트가 정말 은행의 사이트가 맞는지 아니면 해커가 만든 가짜 피싱 사이트인지 확인할 수 있어야 하며, 은행 역시 자신의 서비스에 접속한자가 해당 고객이 맞는지 아니면 고객의 컴퓨터와 서버 사이에서 내용을 가로채고자 하는 해커인지 확인할 수 있어야 한다. 그리고 은행과 고객 간의 통신 내용이 다른 해커에게 도청되지 않도록 내용을 숨겨야 한다. 이럴 때 바로 은행과 고객 간에 TLS를 사용한 연결을 맺어 안전하게 통신을 할 수 있다.
HTTPS
TLS를 사용해 암호화된 연결을 하는 HTTP를 HTTPS(HTTP Secure)라고 하며, 당연히 웹사이트 주소 역시 http://가 아닌 https://로 시작된다. 기본 포트는 80번이 아닌 443번을 쓴다.
흔히 TLS와 HTTPS를 혼동하는 경우가 많은데, 둘은 유사하긴 하지만 엄연히 다른 개념임을 알아두자. TLS는 다양한 종류의 보안 통신을 하기 위한 프로토콜이며, HTTPS는 TLS 위에 HTTP 프로토콜을 얹어 보안된 HTTP 통신을 하는 프로토콜이다. 다시 말해 TLS는 HTTP뿐만이 아니라 FTP, SMTP와 같은 여타 프로토콜에도 적용할 수 있으며, HTTPS는 TLS와 HTTP가 조합된 프로토콜만을 가리킨다.
HTTP는 HTTPS와 달리 암호화되지 않았으며, 중간자 공격 또는 도청의 가능성이 높으므로 HTTPS만큼 안전하지 않다.
웹 브라우저 중 하나인 크롬은 사이트의 보안에 따라 주소창에 아이콘을 표시한다. 지금은 일부 변경되었다.
안드로이드 9를 타깃으로 하는 앱을 만들 때에는 기본값으로 HTTPS 통신만 허용하고 HTTP 통신을 할 경우에는 예외가 발생한다. 개발중인 앱이 HTTP 통신을 하려면 Android Studio에서 별도의 플래그를 추가해야 한다.
HTTPS가 지원되는 사이트를 HTTP 프로토콜로 접속 시 웹 브라우저 차원에서 일정 기간 동안 보안 접속(HTTPS)으로 강제 전환시키는 HSTS라는 기술도 있다. 당연하지만 보안을 강화시키기 때문에 대부분의 최신 웹 브라우저에서 지원하고 있다.
Chrome 88부터 HTTP 양식 작성 시 오류 표시, 90부터 HTTPS 자동 연결이 시도될 예정이고, 2021년 4월부터 HTTPS가 강제될 것으로 보인다.
helmet, hpp
서버의 각종 취약점을 보완해주는 패키지들이며, 익스프레스 미들웨어로서 사용할 수 있습니다.
이 패키지들을 사용한다고 해서 모든 취약점을 방어해주는 것은 아니므로 서버를 운영할 때는 주기적으로 취약점을 점검해야 합니다.
'TIL WIL' 카테고리의 다른 글
[WIL-9week] 2021.03.07~03.13 (0) | 2022.03.13 |
---|---|
항해 99 TIL-21 Web Server vs WAS (0) | 2022.03.08 |
항해 99 TIL-20 TLS (0) | 2022.03.05 |
[WIL-7week] 2021.02.11~02.27 (0) | 2022.02.27 |
항해 99 TIL-19소프트웨어 공학 (0) | 2022.02.24 |