Section 4 [인증 / 보안] 기초 (3)

챠오·2023년 1월 12일
0

코드스테이츠

목록 보기
3/7

SQL Injection

SQL Injection(SQL 삽입)은 웹 해킹을 접한다면 가장 먼저 배우는 공격 기법인 만큼 간단하지만 아주 강력한 공격이다.

이름처럼 데이터베이스에서 임의의 SQL문을 실행할 수 있도록 명령어를 삽입하는 공격 유형으로, 응용 프로그램의 보안상의 허점을 이용해 데이터베이스를 비정상적으로 조작하며, 이로 인해 기록이 삭제되거나 데이터가 유출될 수 있다.


SQL injection 대응 방안

1. 입력(요청) 값 검증

SQL문은 사람이 사용하는 자연어와 비슷하기 때문에 키워드를 막기엔 한계가 있다.

따라서 블랙리스트가 아닌 화이트리스트 방식으로 해당 키워드가 들어오면 다른 값으로 치환하여 SQL Injection에 대응할 수 있다.

보안에서 화이트리스트란 기본 정책이 모두 차단인 상황에서 예외적으로 접근이 가능한 대상을 지정하는 방식 또는 그 지정된 대상들을 말한다.

2. Prepared Statement 구문 사용

Prepared Statement 구문을 사용하면 사용자의 입력이 SQL문으로부터 분리되어 SQL Injection을 방어할 수 있다.

사용자의 입력 값이 전달 되기 전에 데이터베이스가 미리 컴파일하여 SQL을 바로 실행하지 않고 대기하며, 사용자의 입력값을 단순 텍스트로 인식한다.

따라서 입력 값이 SQL문이 아닌 단순 텍스트로 적용되며 공격에 실패하게 된다.

3. Error Message 노출 금지

공격자는 데이터베이스의 Error Message를 통해 테이블이나 컬럼 등 데이터베이스의 정보를 얻을 수 있다.

에러가 발생한 SQL문과 에러 내용이 클라이언트에 노출되지 않도록 별도의 에러핸들링이 필요하다.


Cross-Site Request Forgery (CSRF)

Web Application Security란?

  • 개발자들이 웹 사이트, 모바일 어플, 웹 API 등을 만들 때에 해커들의 공격을 막기 위해서 보안 (Security) 는 필수다.

  • 여러가지 공격 종류 (ex : Sql injection, XSS, CSRF)


CSRF (Cross Site Request Forgery) 란?

  • 다른 사이트 (Cross Site) 에서 유저가 보내는 요청 (Request) 을 조작 (Forgery) 하는 것
    ex) 이메일에 첨부된 링크를 누르면 계좌의 돈이 빠져나감

  • 해커가 직접 데이터에 접근할 수 없다
    ex) 다른 오리진이기 때문에 접근할 수 없음


CSRF 공격을 하기 위한 조건

  • 쿠키를 사용한 로그인
    유저가 로그인 했을 때, 쿠키로 어떤 유저인지 알 수 있어야 함

  • 예측할 수 있는 요청 / parameter를 가지고 있어야 함
    Reuest에 해커가 모를 수 있는 정보가 담겨있으면 안됨


CSRF 공격을 막는 방법

  • CSRF 토큰 사용하기
    서버 측에서 CSRF 공격에 보호하기 위해 문자열을 유저의 브라우저와 웹에만 제공

  • Same-site Cookie 사용하기
    같은 도메인에서만 세션 / 쿠키를 사용할 수 있다

profile
무용한 헛소리들

0개의 댓글