SQL Injection

2025. 7. 20. 14:29·Computer Science
반응형

SQL Injection이란 조작된 SQL 쿼리가 데이터베이스에 그대로 전달되어 비정상적인 쿼리 명령을 실행시키는 공격 기법이다.

1. 인증 우회 방법

값을 입력하는 input에 SQL 쿼리를 넣어, 해당 문자열이 그대로 데이터베이스에 전달되는 방식

  • 세미콜론으로 쿼리를 닫아버리고, 유저를 삭제하는 등의 쿼리를 추가로 넣을 수 있다.
  • 비밀번호 뒤에 OR 1=1을 붙여 로그인이 무조건 성공하도록 할 수 있다.
  • 첫 번째 쿼리를 종료시키고, 원하는 쿼리를 실행시킬 수도 있다.
    • ; DELETE FROM USERS;

2. 데이터 노출

시스템에서 발생하는 에러 메시지를 이용해 공격하는 방법이다.
해커는 GET 방식으로 동작하는 URL 쿼리 스트링을 추가하여 에러를 발생시킨다. 이를 통해 웹앱의 데이터베이스 구조를 유추할 수 있고 해킹에 활용한다.

방어법

  1. 서버에서 input 값을 입력받을 때, 검증 로직을 추가한다.
  2. SQL 서버 오류 발생시, 에러 메시지를 감춘다.
    • 해커에게 로그가 전달되지 않도록 만든다.
  3. DBMS에서 제공하는 PrepareStatement 사용하기
    • ? 내부에 입력되는 값들은 문자열로만 취급되기 때문에 Injection 공격을 방지할 수 있다.
반응형

'Computer Science' 카테고리의 다른 글

SQL(RDBMS)와 NoSQL 데이터베이스  (1) 2025.07.20
CAP 이론과 NoSQL 데이터베이스의 확장성  (0) 2025.07.20
데이터베이스 Join  (0) 2025.07.20
데이터베이스 이상(Anomaly) 현상  (0) 2025.07.20
데이터베이스 Key  (0) 2025.07.20
'Computer Science' 카테고리의 다른 글
  • SQL(RDBMS)와 NoSQL 데이터베이스
  • CAP 이론과 NoSQL 데이터베이스의 확장성
  • 데이터베이스 Join
  • 데이터베이스 이상(Anomaly) 현상
부기(창의)
부기(창의)
창의의 개발블로그입니다.
  • 부기(창의)
    창의
    부기(창의)
  • 전체
    오늘
    어제
    • 분류 전체보기 (221)
      • 고민 (1)
      • 데브옵스 (9)
      • AWS (3)
      • 웹 (13)
      • Docker (2)
      • Git (1)
      • JAVA (14)
      • OOP (3)
        • 디자인 패턴 (1)
      • 백준 (106)
        • JAVA (7)
      • Spring (23)
      • 개발 관련 (4)
      • 알고리즘 (4)
      • TIL (13)
      • 우아한 테크코스 (9)
        • 프리코스 지원과정 (6)
      • NextJS (3)
      • Computer Science (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Github : https://github.com/chan⋯
  • 인기 글

  • 태그

    hibernate
    다이나믹 프로그래밍
    스레드
    우테코 7기
    페스타북
    알고리즘
    jvm
    운영체제
    dp
    OS
    Spring Boot
    메모리
    백트래킹
    도커
    완탐
    자바
    스프링
    SSR
    spring
    백준
    aws
    동시성
    ec2
    뉴진스
    페스타타북
    java
    완전탐색
    우테코
    우테코 프리코스
    jpa
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
부기(창의)
SQL Injection
상단으로

티스토리툴바