Wahr/Falsch
문제
독일어 원문
Parameterisierte Queries (stored procedures) sind ein effektiver serverseitiger Schutz gegen SQL-Injection.
한국어 해석
parameterized query는 SQL injection에 효과적인 server-side 방어다.
Wahr/Falsch 즉시 채점
선택 후 즉시 개념 함정을 확인하세요.
단계별 힌트
막혔을 때만 한 단계씩 여세요. 정답을 바로 읽는 것보다 기억을 꺼내는 시간이 중요합니다.
- 첫 힌트: SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
- Wahr로 표시한다.
- SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
- 함정: stored procedure라는 이름만으로 안전한 것은 아니며 내부에서도 parameter binding을 해야 한다.
- 후속 점검: 문자열 연결과 prepared statement의 데이터 흐름 차이는?
채점 기준으로 내 답안 점검하기
- Wahr로 표시한다.
- SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
답안 슬롯 자가 점검 — 실제로 말하거나 쓴 항목만 체크하세요.
0/2 slots
정답과 핵심 해설 확인하기
Wahr. SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
- Wahr로 표시한다.
- SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
Wahr
개념부터 다시 보는 상세 풀이
BEGINNER LESSON
웹 보안: 이 문제를 처음부터 이해하기
ZERO-BASE START
정말 아무것도 모른다고 가정하고 시작합니다
전문 용어를 알고 있다고 가정하지 않습니다. 먼저 일상적인 장면을 보고, 그 장면의 사람과 행동에 실제 보안 용어를 하나씩 붙인 뒤, 시스템에서 일어나는 순서를 따라갑니다.
기초 개념 01
SQL injection과 prepared statement
1타 강사식 시작: 이름은 잠시 가리고 장면부터 봅시다
주문서의 이름 칸에 ‘주문 취소하고 금고 열기’라고 썼을 때 직원이 그것을 이름이 아니라 새 지시로 실행하는 문제다. Prepared statement는 이름 칸을 끝까지 데이터 칸으로 고정한다.
지금은 이 비유를 완벽히 외울 필요가 없습니다. 누가 무엇을 가지고 있고, 무엇을 하려 하며, 어느 지점에서 문제가 생기는지만 찾으면 됩니다.
이제 실제 용어를 하나씩 붙여 봅시다
SQL은 database에 질문하는 언어다. 프로그램이 SQL 문자열과 사용자 입력을 단순히 이어 붙이면 입력의 따옴표나 연산자가 데이터가 아니라 SQL 문법으로 해석될 수 있다. 이것이 SQL injection이다. Prepared statement는 SQL 구조를 먼저 고정하고 사용자 값은 별도 parameter로 전달해 값이 명령 문법이 되지 못하게 한다.
TERMS FROM ZERO
전문 용어를 한 단어씩 풀기
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
SQL query
Database에 조회·삽입·변경 등을 요청하는 SQL 문장입니다.
SQL injection
공격자 입력이 SQL data가 아니라 query 구조와 명령으로 해석되는 취약점입니다.
Prepared statement
SQL 구조를 먼저 고정하고 사용자 값을 별도 parameter로 전달하는 방식입니다.
Parameter binding
입력값을 SQL syntax와 분리된 data slot에 연결하는 과정입니다.
프로그램이나 프로토콜 안에서는 다음 순서로 움직입니다.
- $_GET, $_POST 같은 입력 source를 찾는다.
- SQL 문자열 연결 또는 interpolation 지점을 찾는다.
- 입력이 query 구조를 바꿀 수 있는지 확인한다.
- Prepared statement와 bound parameter로 구조와 값을 분리한다.
- Database account 권한도 최소화한다.
왜 여기서 많이 틀릴까요?
따옴표를 몇 개 치환하는 blacklist나 client-side validation만으로 해결하려 하지 않는다.
조건을 생략하거나 서로 다른 기능을 같은 것으로 취급했는지 확인하세요. 정답 문장을 외우는 것보다 틀린 이유를 말할 수 있어야 변형 문제를 풀 수 있습니다.
핵심부터 말하면 SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
이 글에서 익힐 것
parameterized query는 SQL injection에 효과적인 server-side 방어다.
이 문항에 연결된 1개 기초 개념과 4개 전문 용어를 자신의 말로 설명한다.
정의만 외우지 않고 구체적인 입력·message·code 흐름을 단계별로 재현한다.
시험 답안에서 결론과 근거, 조건 또는 한계를 함께 쓴다.
이 문제가 어려운 이유
문제 문장은 짧지만 초보자가 이미 안다고 가정하는 용어와 중간 단계가 숨어 있습니다. 이 페이지에서는 ‘parameterized query는 SQL injection에 효과적인 server-side 방어다.’를 바로 외우지 않고, 아래 연결 개념을 일상 장면에서 시작해 실제 시스템 순서로 바꿉니다.
문제가 묻는 것
parameterized query는 SQL injection에 효과적인 server-side 방어다.
문장의 주어가 실제로 제공하는 기능과 서술어가 주장하는 기능을 분리합니다. ‘항상’, ‘모두’, ‘자동으로’ 같은 범위 표현과 빠진 조건을 찾은 뒤 반례 또는 정확한 정의로 판정합니다.
먼저 알아야 할 개념
-
SQL injection과 prepared statement
SQL은 database에 질문하는 언어다. 프로그램이 SQL 문자열과 사용자 입력을 단순히 이어 붙이면 입력의 따옴표나 연산자가 데이터가 아니라 SQL 문법으로 해석될 수 있다. 이것이 SQL injection이다. Prepared statement는 SQL 구조를 먼저 고정하고 사용자 값은 별도 parameter로 전달해 값이 명령 문법이 되지 못하게 한다.
주문서의 이름 칸에 ‘주문 취소하고 금고 열기’라고 썼을 때 직원이 그것을 이름이 아니라 새 지시로 실행하는 문제다. Prepared statement는 이름 칸을 끝까지 데이터 칸으로 고정한다.
예제로 확인하기
-
SQL injection과 prepared statement을 이 문제에 대입하기
주문서의 이름 칸에 ‘주문 취소하고 금고 열기’라고 썼을 때 직원이 그것을 이름이 아니라 새 지시로 실행하는 문제다. Prepared statement는 이름 칸을 끝까지 데이터 칸으로 고정한다.
$_GET, $_POST 같은 입력 source를 찾는다.
SQL 문자열 연결 또는 interpolation 지점을 찾는다.
입력이 query 구조를 바꿀 수 있는지 확인한다.
Prepared statement와 bound parameter로 구조와 값을 분리한다.
Database account 권한도 최소화한다.
위 순서를 문제 문장 ‘parameterized query는 SQL injection에 효과적인 server-side 방어다.’에 적용하면, 이 문항의 핵심 결론은 Wahr. SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.입니다.
정답까지 사고 과정
Wahr로 표시한다.
SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
시험장에서는 이렇게 쓰기
핵심 해설
Wahr. SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
시험 답안으로 정리하기
Wahr로 표시한다.
SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
Wahr falsch
Wahr
자주 틀리는 지점
stored procedure라는 이름만으로 안전한 것은 아니며 내부에서도 parameter binding을 해야 한다.
채점 포인트
Wahr로 표시한다.
SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
한 줄로 기억하기
SQL 구조와 사용자 값을 별도로 전달하면 입력이 SQL 명령으로 재해석되지 않는다. 단순 문자열 연결을 하지 않아야 한다.
스스로 확인하기
문자열 연결과 prepared statement의 데이터 흐름 차이는?
AI 구두시험용 프롬프트
한 문항만 풀어라. 먼저 정답을 열지 말고 90초 안에 답안을 말한 뒤, css-ws2025-26-web-mc-003의 채점 프레임으로 스스로 채점하라. 문제: parameterized query는 SQL injection에 효과적인 server-side 방어다.
학습 기록