문득 이런 생각이 들었다. 나는 프론트엔드는 HTTPS 적용했고, NginX로 내부망 IP를 사용해서 리버스프록시 설정으로 클라이언트로부터 서버가 누군지 모르게 가렸어! 그러면 굳이 백엔드는 HTTPS를 적용안해도 되는거 아니야? 라는 생각을 했다.
정말 감사하게도 이런 멍청한 발상을 해도 뜯어말려주시는 좋은분들이 계신다.
일단 HTTPS의 보안 이점, 리버스 프록시의 보안 이점 둘은 어떻게 다른지 알아본다면 이런 허접한 생각을 할 수가 없었다.
Reverse Proxy는 API서버의 정체를 숨기는 것이지 데이터 자체를 암호화 하는 것이 아니다.
HTTPS는 TCP위에 SSL/TLS층을 추가하여 전송되는 데이터를 암호화하고 인증하고 무결성 보장을 해주어 안전하게 만들어주는 프로토콜이다.
위 그림과 같이 API 서버에 HTTPS를 적용하지 않는다면 아무리 리버스 프록시에 의해 클라이언트가 API 서버를 알 수 없다고 내부망에 숨겨져 있다해도 결국 그 내부망이 공격자로 부터 뚫리게 된다면 더 이상 보내는 데이터가 안전하다고 보장할 수 없는 것이다.
결국 리버스 프록시를 사용한다 해서 백엔드 API서버로 전송되는 데이터가 안전하다고 보장할 순 없다. 그러므로 프론트 엔드, 백 엔드 모두 HTTPS를 적용하는 것이 안전하다.