그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Security
Security

SQL 인젝션이란 무엇이며 어떻게 방어하나요?

실무4/5
설계3/5
인간4/5
기초3/5

면접관의 질문 의도

취약점 정의를 외웠는지가 아니라, 바인딩으로 못 막는 자리에서 무엇을 어떻게 끊는지를 판단할 수 있는지를 가른다.

큐레이션 답변

학습 자료

SQL 인젝션은 사용자 입력이 SQL 문자열에 그대로 결합돼 쿼리 구조 자체가 바뀌는 취약점이다. 공격자는 조건 우회·UNION 조회·데이터 변조 페이로드를 흘려 인증을 건너뛰거나 데이터를 통째로 꺼낸다. 방어의 본체는 PreparedStatement·바인드 변수처럼 값과 쿼리 구조를 분리 하는 것 하나다. 그 위에 ORM·입력 검증·최소 권한 계정·에러 메시지 가림을 다층으로 깔아 사고 반경을 좁힌다.

좋은 답변 구조

  1. 01SQL 인젝션이 어떻게 쿼리 구조를 바꿔치기하는지부터 짧게 정리한다
  2. 02로그인 우회·UNION 추출 같은 대표 시나리오를 한두 개 들어 위험 반경을 보여준다
  3. 03PreparedStatement·바인드 변수가 _왜_ 본질적 방어인지 값/구조 분리 관점으로 설명한다
  4. 04동적 식별자처럼 바인딩으로 안 되는 자리는 화이트리스트와 최소 권한·에러 가림으로 보강한다고 마무리한다

자주 실수하는 포인트

입력 필터링·블랙리스트만으로 다 막힌다고 단정한다
ORM을 쓰면 인젝션이 사라진다고 보고 native query·동적 정렬 분기를 그냥 둔다
정렬 컬럼·테이블 이름을 PreparedStatement 자리표시자로 바인딩하려다 막혀서 결국 문자열 결합으로 돌아간다
운영 DB 계정에 DROP·DDL 권한을 그대로 둬서 인젝션 한 번이 전체 스키마를 날리는 사고로 번지게 둔다

실무 맥락

  • 로그인·검색·관리자 조회처럼 외부 입력이 WHERE 절에 바로 들어가는 API
  • 정렬 컬럼·페이지 크기·필터 키를 쿼리스트링으로 받는 목록 화면 백엔드
  • 오래된 JDBC·MyBatis 동적 쿼리가 남아 있는 레거시 모듈을 점검하는 상황
  • 보안 점검·외부 감사에서 SQLi 항목이 지적돼 우선순위 높게 수정해야 하는 시점

본인 경험에 녹이는 힌트

문자열 결합으로 짜인 검색 쿼리를 PreparedStatement·MyBatis #{} 로 바꿔본 경험이 있다면, 무엇을 바인딩으로 풀고 무엇을 화이트리스트로 끊었는지 그대로 답변에 녹일 수 있다

동적 정렬·필터를 받는 목록 API를 만든 경험이 있다면, 컬럼명을 enum/화이트리스트로 매핑한 이유와 그 결정의 트레이드오프를 설명할 수 있다

운영 계정 권한을 줄이거나 읽기 전용 계정으로 조회 API를 분리했던 경험이 있다면, 인젝션 사고 반경을 권한 모델로 어떻게 좁혔는지 연결할 수 있다

보안 점검·취약점 리포트에서 SQLi 케이스를 받아본 적이 있다면, 어떤 패턴이 잡혔고 무엇을 코드 컨벤션으로 끌어올렸는지 답변 후반에 붙일 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1정렬 컬럼·테이블 이름처럼 바인딩이 안 되는 자리는 어떻게 안전하게 처리하나요
Q2ORM을 써도 인젝션이 생기는 대표적인 코드 패턴은 어떤 게 있나요
Q3LIKE 절의 와일드카드(%, _)나 IN 절의 가변 길이는 어떻게 다루나요
Q4코드 리뷰·CI에서 SQLi 회귀를 막기 위해 어떤 자동 검사를 붙여봤나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문