XSS, CSRF, SQL Injection이란

싱클베어·2022년 2월 19일

X(Cross)교차로 주로 번역되는데, (공격자가 의도한) 다른 이라고 해석하면 본래 의미가 맞는 것 같다.

XSS(Cross Site Scripting)

  • 개념

크로스 사이트 스크립팅이란, 게시판, 웹메일등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나, 다른 사용자의 이용을 방해하거나, 개인정보를 특정(다른) 사이트로 전송시키는 웹 공격을 말한다.

XSS의 공격 대상은 서버가 아닌 일반 유저다. 게시글을 열어보거나, 이메일에 첨부된 링크를 클릭하는 행위로 공격받는다.

  • 대응 방안
  1. 블랙리스트 방식의 필터링
    • 제한된 태그를 제외하고, 모든 태그를 사용할 수 있도록 하는 범용적 방법. 공격이 발생한 후 처리하므로, 화이트리스트보다 보안성은 낮지만 편의성은 높다.
  2. 화이트리스트 방식의 필터링
    • 관리자가 허용한 태그만을 사용하도록 하는 제한적 방법.
    • 사전에 공격을 예방하는 방식으로, 블랙리스트 방식보다 보안성이 높음.
    • 태그를 감싸는 <>&lt &gt로 변환하도록 하여 필터링하고, 허용된 태그만 다시 복구하도록 구현한다.
  • Node.js 웹서버에서 구현한다면?
    • sanitize-html 을 사용하여 html tag 화이트리스트 방식으로 구현.

CSRF (Cross Site Request Forgery)

  • 개념

불특정 다수를 대상으로, 로그인된 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위 (데이터베이스 수정, 삭제, 등록, 송금 등)를 하게 만드는 공격이다.

악성 스크립트를 실행시킨다는 점에서 XSS 공격과 유사하지만, XSS는 스크립트가 클라이언트에서 실행되지만 CSRF 공격은 사용자가 악성 스크립트를 서버에 요청하는 형식이다.

스크립트, HTML을 공격 방법으로 사용한다.

  • 대응 방안
  1. XSS와 동일한 방식으로, 입력 값에 대해 필터링
  2. 데이터 변경 시 CSRF Token 을 요구하고, 토큰이 없으면 예외를 발생시켜 허가되지 않는 동작을 막는다.

SQL Injection

  • 개념

    • 웹 응용 프로그램에 강제로 SQL 구문을 삽입하여, 내부 데이터베이스 서버의 데이터를 유출하거나 변조하는 공격.
    • DB 쿼리값을 조작하여 DB에 잘못된 값을 주입해, 관리자 계정 등으로 접근하여 DB 조작을 하는 공격 방식.
  • 대응 방안

    1. DB와 연동하는 스크립트의 모든 파라미터를 점검, 사용자의 입력 값이 SQL injection 발생시키지 않도록 수정.
    2. 사용자 입력 시 특수문자 '"/\;: Space - + 등 포함되어 있는지 검사하여 허용되지 않는 문자열이나 문자가 포함된 경우 에러 처리.
    3. SQL 서버의 에러 메시지를 사용자에게 보여주지 않도록 설정. 에러 메시지 분석을 통해 SQL Injection 스트링을 작성하지 못하도록 함.
    4. 웹 애플리케이션이 사용하는 데이터베이스의 사용자 권한을 제한.

참고 URL

웹 해킹기법 - XSS, SQL injection, CSRF

profile
안녕하세요.

0개의 댓글