[Security]SQL Injection

2025. 11. 7. 01:54·cs/sec
728x90

SQL Injection이란?

SQL 코드를 주입하여 데이터베이스를 조작할 수 있게 하는 보안 취약점이다.

 

SQL Injection 방어하는법

1.PreparedStatement 사용

Prepared Statement를 사용하면 인자를 넣어주기 전의 쿼리를 DBMS가 미리 컴파일하여 대기하므로 이후, 인자에 대해서는 쿼리가 아닌 단순 문자열로 인식하기 때문에 안전하다.

2.@Query, @Param

Spring Data JPA에서는 구현체로 Hibernate를 사용하고있다. Hibernate(하이버네이트) 항상 Prepared Statement를 사용하고있기때문에 SQL Injection으로 부터 안전하다고 볼수있습니다. JPA query를 만들어서 사용할 때도 입력값을 바로 쿼리에 넣게되면 SQL injection에 취약하게 되므로 @Query, @Param 파라미터 바인딩를 사용하도록 한다.

 

@Query 

어노테이션을 사용하여 직접 쿼리를 작성할 수 있다.

@Query는 JpaRepository를 상속하는 인터페이스에서 사용할 수 있다.

 

@Param

 어노테이션을 통해 파라미터를 바인딩할 수 있다.

 

SQL 인젝션의 종류와 공격 방법

1.Error

1=1 

논리적 에러를 이용한 SQL 인젝션

' or '1' = 1를 넣어서 1과 1이 같으면 참이므로 1 = 1참이다. or 은 앞에 값과 뒤에 값 중 하나라도 참이면 참이므로 이 구문은 참이 되어 로그인에 성공하게 된다.

 

2.Union

select문을 한번 더 쓸 수 있게 해주는 존재입니다. 두개의 쿼리를 합쳐줍니다.

  • 동일한 수의 컬럼을 가지고 있어야 한다
  • 각 위치에 있는 컬럼의 데이터 타입도 일치해야 합니다

참고)UNION은 중복값을 제외하고 UNION ALL은 제외 하지 않고 전체를 합친다.

 

3.Blind

Blind SQL 삽입은 참과 거짓, 쿼리가 참일때와 거짓일 때의 서버의 반응만으로 데이터를 얻어내는 기술이다.

728x90
반응형

'cs > sec' 카테고리의 다른 글

[인프라와 웹의 위협기술]2. 후속공격 실습을 위한 C2 통신 환경 구축 실습  (0) 2025.12.10
[인프라와 웹의 위협기술]1. 후속공격(Post Exploitation) 단계의 주요 보안 위협들  (0) 2025.12.10
[Security]OWASP API Security Top 10  (0) 2025.11.06
[Security] HTS, MTS이란?  (0) 2025.11.06
[Security]모바일 취약점: 안드로이드(Andorid), iOS  (0) 2025.11.06
'cs/sec' 카테고리의 다른 글
  • [인프라와 웹의 위협기술]2. 후속공격 실습을 위한 C2 통신 환경 구축 실습
  • [인프라와 웹의 위협기술]1. 후속공격(Post Exploitation) 단계의 주요 보안 위협들
  • [Security]OWASP API Security Top 10
  • [Security] HTS, MTS이란?
lakedata
lakedata
lakedata 님의 블로그 입니다.
  • lakedata
    lakedata 님의 블로그
    lakedata
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • cs (82)
        • dev (28)
        • sec (29)
        • ops (25)
      • 자격증 (32)
        • 정보처리기사 (20)
        • 정보보안기사 (1)
        • aws dva (6)
        • aws dop (2)
      • IT서적 (27)
        • 클린아키텍처 (10)
        • 객체지향의사실과오해 (7)
        • 오브젝트 (10)
      • 알고리즘과 CTF (44)
        • 알고리즘 (20)
        • 백준 (13)
        • 프로그래머스 (7)
        • CTF (2)
  • 블로그 메뉴

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

    • github
  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    Java
    CS
    docker
    Security
    Spring
    SQL
    AWS
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
lakedata
[Security]SQL Injection
상단으로

티스토리툴바