https://www.youtube.com/watch?v=6WZ6S-qmtqY
위 영상은 ByteByteGo에서 제시한 12가지 API 보안을 강화하는 전략에 대한 영상이다.
영상에서 소개한 그 방법 12가지를 정리해보았다!
1) Use HTTPS
- HTTPS란?
- HTTPS는 HTTP에 SSL/TLS 보안 프로토콜을 적용한 것으로 데이터가 전송되는 동안 암호화되어, 클라이어느와 서버 간에 안전하게 데이터를 전송할 수 있도록 해준다.
- 암호화는 데이터가 도난, 도청(Eavesdropping), 변조(Man-in-the-Middle,MiTM) 되는 것을 방지하며, 이는 사용자의 개인정보, 로그인 자격증명 및 기타 민감한 정보를 안전하게 유지하는 역할을 한다.
- 언제 사용하는가?
- 내부 인트라넷 망이 아닌이상, API를 통해 데이터를 전송할 때는 항상 HTTPS를 사용하는 것이 좋다.
- 어떻게 사용하는가?
SSL/TLS 인증
1. [SSL디지털 인증서?] SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달한다
sds9429.tistory.com
2) Use OAuth2
- OAuth2.0이란?
- OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트를 접속할 때 자신들의 정보에 대해 웹사이트나 다른 어플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 제 3자 클라이언트가 사용자의 접근 권한 위임을 위한 개방형 표준 프로토콜이다.
- 언제 사용하는가?
- 우리의 서비스가 우리 서비스를 이용하는 유저의 타사 플랫폼 정보에 접근하기 위한 권한을 타사 플랫폼으로부터 위임 받을때 사용한다.
- 예를 들어, 네이버페이를 이용하기 위해, 클라이언트의 네이버 계정정보를, 구글 캘린더 정보를 가져오기 위해, 구글의 계정 정보를 가져올때 사용된다.
- 어떻게 사용하는가?
OAuth란?
회원가입이나 로그인이 필요한곳 어디든 Google, Naver, Kakao, twiter등 외부 계정을 기반으로 간편히 회원가입 및 로그인 할 수 있는 웹,앱 어플리케이션을 쉽게 찾아볼 수 있다. 이때 사용 되는 프로
sds9429.tistory.com
3) Use WebAuthn
- WebAuthn이란?
- 웹 기반 API로, 웹 사이트가 로그인 페이지를 업데이트하여 지원되는 브라우저 및 플랫폼에서 FIDO 기반 인증을 추가할 수 있도록 한다.
- 웹 서비스와 앱은 해당 인증을 사용하면, 생체 인식, 모바일 디바이스 및 또는 FIDO 보안 키를 통해 사용자에게 더 쉬운 로그인 환경을 제공할 수 있으며, 비밀번호만 사용하는 것보다 훨씬 더 높은 보안을 제공한다.
- FIDO의 높은 보안성은 모든 웹사이트에서 고유하고, 사용자의 온디바이스 형태로 암호화 로그인 자격증명을 사용한다. 이 보안 모델은 피싱, 모든 형태의 비밀번호 도용 및 리플레이 공격의 위험을 제거한다.
- 언제 사용하는가?
- 사용자가 비밀번호를 기억하거나 입력할 필요 없이, 더 빠르고 안전하게 로그인하길 원할 때
- 기존 인증방식 + 추가로 보안강화를 원할때
- 어떻게 사용하는가?
- FIDO Authenticator(FIDO 지원 Device가 내장된 Module 또는 외부 인증장치)에 사용자 등록을 하여, Private-Key와 Public-key를 생성한다.
- Public-key는 FIDO Server에 보내진다. Private-key는 FIDO Authenticator의 Secure Key Store 영역에 안전하게 보간되어진다.
- 사용자가 로그인 할 때, 웹서버는 사용자의 FIDO Authenticator로 인증 요청을 보낸다. FIDO Authenticator는 사용자의 동의(uaf,ctap1,ctap2 등)를 받아, Private-Key를 사용하여 요청을 서명하고, 이 서명을 웹사이트로 전송한다.
- 웹 서버는 받은 서명을 사용자의 공개키로 검증하여, 인증을 완료한다. 이 과정에서 개인정보는 전송되지 않으므로, 보안이 유지된다.
추가 전략 추후 작성
'개발 > WEB' 카테고리의 다른 글
디바운싱과 쓰로틀링 (0) | 2024.06.20 |
---|---|
OAuth란? (0) | 2024.05.02 |
SSE(Server-Sent-Events) (0) | 2024.04.15 |
세션, 쿠키 그리고 토큰의 차이점 (0) | 2024.04.11 |
SSL/TLS 인증 (0) | 2024.04.11 |