Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XSS, CSRF #21

Open
NewWisdom opened this issue May 15, 2021 · 0 comments
Open

XSS, CSRF #21

NewWisdom opened this issue May 15, 2021 · 0 comments
Labels
atdd-subway-path 지하철 경로조회 / 로그인

Comments

@NewWisdom
Copy link
Owner

NewWisdom commented May 15, 2021

XSS(cross-site scripting)

  • 웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법
  • 사용자는 사이트에 접속할 경우 삽입된 코드를 실행하게 되며, 의도치 않은 행동을 수행시키거나 민감한 정보를 탈취한다.
  • 자바스크립트를 사용하여 공격하는 경우가 많다.

방어 - HTTP Only Cookie

서버에서 클라이언트에게 쿠키를 보내줄 때 HTTP Only 플래그를 설정해준다.
HttpOnly란, 이름에서 알 수 있듯이 HttpOnly가 설정된 쿠키는 HTTP 통신 상에서만 사용되어야 한다는 선언이다.
즉, 통신에서만 사용되므로 자바스크립트 같은 외부 프로그램은 접근할 수 없도록해야 한다는 의미이다.

CSRF

  • 권한을 도용당한 인터넷 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록)를 특정 웹사이트에 요청하게 만드는 공격
  • 사용자가 로그인 한 상태라면 쿠키를 통해 서버에 본인확인을 하기 때문에 서버는 사용자가 의도한 작업인지 아닌지 확인 할 수 없음
  • ex) 사용자가 그저 버튼을 눌렀을 뿐인데 해커가 심어놓은 스크립트에 의해 내 계정의 인증과정을 거쳐 의도와 관계없이 SNS에 광고성 글이 올라간다.

방어 - CSRF Token

CSRF Token은 임의의 난수를 생성하고 세션에 저장한다.
그리고 사용자의 매 요청마다 해당 난수 값을 포함시켜서 전송시킨다.
서버에서는 요청을 받을 때 마다 세션에 저장된 토큰값과 요청 파라미터에 전달된 토큰 값이 같은지 검사한다.
참고로 Spring Security에서는 이 CSRF 공격에 대한 방어 기능을 시큐리티 모듈에서 제공해주고 있다.


XSS vs CSRF?

XSS는 주로 CSRF를 하기 위해서 사용되기 때문에 종종 CSRF와 혼동되는 경우가 있다.
하지만 XSS는 자바스크립트를 실행시키는 것이고, CSRF는 특정한 행동을 시키는 것에서 차이가 있다.
CSRF는 정보를 탈취하는 것이 아니라 단순히 사용자 행위를 하는 것

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
atdd-subway-path 지하철 경로조회 / 로그인
Projects
None yet
Development

No branches or pull requests

1 participant