HTTPS, CORS, XSS

SEUNGJUN·2022년 4월 28일
0

1. HTTPS 정의?

💡 HTTPS는 Hypertext Transfer Protocol **Secure** 의 약자로 Web에 **SSL/TLS**를 이용한 보안 데이터를 이동할때 사용된다.

SSL/TLS

💡 인증이나 암호키교환, 정보의 암호화에 사용하는 각 알고리즘을 여러개 중에서 선택하여 사용한다. 어떤 알고리즘을 사용하는가는 통신의 초기 단계에서 서버와 클라이언트가 서로 대화하여 서로가 공통으로 대응할수 있는 것을 선택한다.

SSL/TLS의 기능

HTTPS 동작 과정?

  • 클라이언트(브라우저)가 서버로 최초 연결 시도를 함
  • 서버는 공개키(엄밀히는 인증서)를 브라우저에게 넘겨줌
  • 브라우저는 인증서의 유효성을 검사하고 세션키를 발급함
  • 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송함
  • 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
  • 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행함

HTTTPS를 사용하는 이유

💡 HTTPS는 SSL인증서를 통해서 클라이언트가 서버에 정보를 제공할때 데이터를 암호화해서 넘겨주기 때문에 중간에 정보를 가로채더라도 암호화가 되어있어서 해독할수가 없기 때문에 보안 때문에 사용한다고 한다.

2. CORS(Cross Origin)

💡 Cross-Origin Resource Sharing의 줄임말로 교차 출처 리소스 공유라고 한다. 여기에서 중점적으로 봐야할것은 **교차 출처**인데 쉽게 말해서 **다른 곳에 출처**라고 생각하면 된다.

출처(Origin)란 무엇인가?

출처에는 Protocol + Host(hostname+port) 합친것을 의미하는데, 어떻게 보면 어느 서버로 들어가는 문 같은 거라고 생각할수 있다.

SOP(Same-Origin Polisy)

URL출처이유
https://github.com/about같다출처가 모두 동일
https://github.com/about?id=같다출처가 모두 동일
http://github.com/about다르다프로토콜이 다름
https://naver.com/about다르다호스트가 다름
💡 SOP는 같은 출처 기준으로 프로토콜, 호스트, 포트 세가지가 동일 한지 확인해서 세가지가 모두 동일하면 SOP기준으로 요청이 되고, 반대로 리소스가 자신의 출처와 다르게 된다면 이때 CORS요청을 실행하게 된다.

CORS 해결방법

서버에서

💡 프론트 개발자를 위해 응답 헤더에 올바른 Access-Control-Allow-Origin이 내려올 수 있도록 세팅해줘야 한다.

클라이언트에서

💡 Webpack Dev Server로 리버스 프록싱 하여 우회 가능 하지만 이런한 방법은 로컬환경에서만 가능하다. 가장 좋은 방법은 서버 개발자에게 도움을 요청하는게 좋다.

3. XSS(Cross Site Scripting) 크로스 사이트 스크립팅

💡 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, **피싱 공격**을 진행하는 것을 말한다. XSS 공격은 스크립트 언어와 취약한 코드를 공격 대상으로 합니다.

원인?

💡 웹 어플리케이션에서 많이 나타나는 취약점으로 주로 여러 사용자가 보게 되는 게시판에다가 악성 스크립트가 담긴 글을 그대로 올리는 경우가 있는데 이때 웹에서 사용자의 값을 제대로 검사하지 않고 사용하게 될때 발생하게 된다. 이렇게 되는순간 사이트를 이용하는 다른 사용자들의 정보가 고스란히 탈취가 될수 있는 환경이 된다는것이다.

XSS공격

💡 1. 해커가 XSS공격이 가능한 사이트를 찾는다. 2. 해커가 사이트 url에 악성 스크립트를 숨긴다. 3. 유저가 사이트를 방문할때 스크립트가 작동한다. 4. 스크립트에 의해 유저의 개인 정보가 유출되게 된다.

XSS예방

💡 XSS 취약점을 근복적으로 제거하기 위해서는 스크립트 등 해킹에 사용될 가능성이 있는 코딩 입력 출력 값을 검증하고 무효화 해야한다. 1.
profile
RECORD DEVELOPER

0개의 댓글