XSS와 CSRF

허정·2022년 6월 16일
0

추가로 API Req를 제한하는 방법에 대해서 알아봅시다. API Req가 자주 올때 제한하는 것을 구현하는 방법을 말하는 것입니다.

1. XSS, CSRF

보안 문제입니다. 그래서 시큐어 코딩을 고려해야 합니다.

(1) HTTP 통신

웹 통신이 HTTP 통신이기 때문에, Stateless 합니다. 그래서 클라이언트 단에서는 사용자를 기억하기 위해서 쿠키를 사용합니다.

(2) JS 파일은 WAS에 있어야 합니다

  • 해커가 게시판에 글을 작성했습니다.
  • 이 글에 JS를 삽입해서 집어넣어버립니다. 해당 웹 서비스에 원래 있던 JS 파일이 아닌데, 게시물을 작성하면서 올라가버렸고 심지어 제 3자가 읽었을 때 작동까지 한다고 가정해봅시다.
  • 클라이언트 단의 쿠키를 유출하는 등의 코드를 집어넣으면 악성코드가 되어버립니다. Alice가 이 글을 읽어버린다면, Alice 쪽에서 스크립트가 작동해버립니다.
  • 해결하는 방법은 하나입니다. 글을 작성하는 것은 서버 개발자 입장에서 본다면 사용자의 Input입니다. 이것을 어떻게 대응하라고 하는 가이드가 있습니다. 그것이 "시큐어 코딩 가이드"입니다. 핵심은 "입력 데이터 검증"입니다.
  • CSRF는 XSS의 연장선에 있습니다.

(3) 시큐어 코딩 가이드 - 안전한 코딩 기법

https://www.kisa.or.kr/2060204/form?postSeq=6&page=1

  • 일반적인 경우에는 사용자가 문자열에 스크립트를 삽입하여 실행하는 것을 막기 위해 사용자가 입력한 문자열에서 <,>,&,"," 등을 replace 등의 문자 변환 함수나 메소드를 사용하여 &​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​lt, &​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​amp, &​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​quot로 치환합니다.
  • HTML 태그를 허용하는 게시판에서는 게시판에서 지원하는 HTML 태그의 리스트(White List)를 선정한 후, 해당 태그만 허용하는 방식을 적용합니다.
  • 보안성이 검증되어 있는 API를 사용하여 위험한 문자열을 제거합니다.

(4) 사용자의 Input을 믿지 마라

  • Input이 SQL문이면, SQL Injection Attack
  • Input이 운영체제 명령이면, OS Command Injection Attack
  • Input이 JS이면, XSS Attack

0개의 댓글