CSS Tutor Study Hub 메인으로

Computersystemsicherheit 2025/26

실제 시험 문제 68

단답형 · Security Engineering / 4.3 Software und Hardwaresicherheit

단답형

문제

근거 신뢰도 높음실제 시험지 대조 완료단답형2점

독일어 원문

Was ist Input Sanitization?

한국어 해석

input sanitization이란?

직접 답안 작성

답안 슬롯 자가 점검 — 실제로 말하거나 쓴 항목만 체크하세요.

0/3 slots

답안은 브라우저에만 임시 저장됩니다. 채점 프레임과 비교해 스스로 판정하세요.

단계별 힌트

막혔을 때만 한 단계씩 여세요. 정답을 바로 읽는 것보다 기억을 꺼내는 시간이 중요합니다.

0/7
채점 기준으로 내 답안 점검하기
  • 허용 content model을 전제로 제거 또는 변환을 설명한다.
  • validation·normalization과 구분한다.
  • 문맥별 sink control을 대체하지 않음을 쓴다.

답안 슬롯 자가 점검 — 실제로 말하거나 쓴 항목만 체크하세요.

0/3 slots

정답과 핵심 해설 확인하기
summary_ko

정해진 허용 content model과 사용 문맥에 맞도록 위험하거나 불허된 입력 부분을 제거 또는 변환하는 과정이다. 입력 전체를 accept/reject하는 validation, canonical form으로 바꾸는 normalization, SQL parameterization이나 output encoding 같은 sink-specific control과는 역할이 다르다.

exam_answer_frame
  • 허용 content model을 전제로 제거 또는 변환을 설명한다.
  • validation·normalization과 구분한다.
  • 문맥별 sink control을 대체하지 않음을 쓴다.
개념부터 다시 보는 상세 풀이

BEGINNER LESSON

Input Sanitization: 특수문자 삭제가 아니라 문맥에 맞는 입력 처리

ZERO-BASE START

정말 아무것도 모른다고 가정하고 시작합니다

전문 용어를 알고 있다고 가정하지 않습니다. 먼저 일상적인 장면을 보고, 그 장면의 사람과 행동에 실제 보안 용어를 하나씩 붙인 뒤, 시스템에서 일어나는 순서를 따라갑니다.

기초 개념 01

Browser, server, HTTP, HTML parser

1타 강사식 시작: 이름은 잠시 가리고 장면부터 봅시다

같은 기호도 일반 편지 본문에서는 글자지만 계산식 칸에서는 연산자로 읽힌다. Browser도 입력이 HTML text, attribute, script 중 어디에 들어갔는지에 따라 다르게 해석한다.

지금은 이 비유를 완벽히 외울 필요가 없습니다. 누가 무엇을 가지고 있고, 무엇을 하려 하며, 어느 지점에서 문제가 생기는지만 찾으면 됩니다.

이제 실제 용어를 하나씩 붙여 봅시다

Browser는 사용자의 client 프로그램이고 web server는 request를 받아 response를 만드는 프로그램이다. HTTP request에는 method, URL, header, body가 있고 response에는 status, header, body가 있다. Browser는 response body를 단순 글자가 아니라 HTML, JavaScript 같은 문법으로 해석(parse)한다. 외부 입력이 처음 들어오는 곳을 source, 그 입력이 실제 기능에 사용되는 위험한 도착점을 sink라고 부른다. 따라서 입력이 어느 문법 위치와 sink에 들어가는지가 보안에 매우 중요하다.

TERMS FROM ZERO

전문 용어를 한 단어씩 풀기

아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.

HTTP request

Browser나 client가 server에 method, path, headers, body를 담아 보내는 message입니다.

HTTP response

Server가 status, headers, body를 담아 client에 돌려주는 message입니다.

Parser / Interpreter

문자열을 HTML, JavaScript, SQL, shell 같은 문법으로 해석하는 구성요소입니다.

Context

같은 문자가 어느 문법의 어느 위치에 놓였는지를 뜻하며 올바른 encoding 방법을 결정합니다.

프로그램이나 프로토콜 안에서는 다음 순서로 움직입니다.

  1. 사용자 입력이 들어오는 source를 찾는다.
  2. 입력이 출력·DB·명령으로 들어가는 sink를 찾는다.
  3. 그 sink를 어떤 parser가 어떤 context로 읽는지 확인한다.
  4. 공격 영향과 context에 맞는 방어를 연결한다.

왜 여기서 많이 틀릴까요?

입력 문자열 자체만 보고 취약점을 이름 붙이지 말고 source에서 sink까지 실제 흐름을 추적한다.

조건을 생략하거나 서로 다른 기능을 같은 것으로 취급했는지 확인하세요. 정답 문장을 외우는 것보다 틀린 이유를 말할 수 있어야 변형 문제를 풀 수 있습니다.

핵심부터 말하면 정해진 허용 content model에 맞도록 위험하거나 불허된 입력 부분을 제거 또는 변환하는 과정입니다. 입력 전체를 accept/reject하는 validation이나 canonical form을 만드는 normalization과는 다르며, 문맥별 전용 방어도 대체하지 않습니다.

이 글에서 익힐 것

  • validation, normalization, sanitization, output encoding을 구분한다.

  • allowlist가 적합한 입력과 자유 텍스트를 구분한다.

  • SQL·HTML·shell마다 방어가 다른 이유를 이해한다.

먼저 알아야 할 개념

Validation은 type·형식·범위를 검사해 입력 전체를 받거나 거부하고, normalization은 동등한 표현을 canonical form으로 바꿉니다. Sanitization은 제한된 rich text처럼 일부 content를 허용해야 할 때 명시한 content model 밖의 위험 node·attribute를 제거하거나 변환합니다. 셋은 관련되지만 동의어가 아닙니다.

예제로 확인하기

  • 나이 입력

    1. 기대 형식은 정수입니다.

    2. 문자열을 엄격하게 정수로 parse합니다.

    3. 0..130 같은 허용 범위를 server에서 검사합니다.

    4. 범위를 벗어나면 임의로 고치기보다 명확히 거부합니다.

  • 제한된 rich-text 게시글

    1. 허용 model을 `<b>` 같은 일부 tag로 제한하고 script·event handler·위험 URL scheme은 금지합니다.

    2. 검증된 HTML sanitizer가 불허 node와 attribute를 제거하되 허용 content는 보존합니다.

    3. Plain text로 출력할 때는 sanitization 대신 해당 HTML context에 맞는 output encoding을 사용합니다.

    4. DB query에는 prepared statement를 사용해 값과 SQL 구조를 분리합니다. 이는 sanitizer와 별개의 sink control입니다.

정답까지 사고 과정

  1. 입력 전체의 type·형식·범위를 검사하고 accept/reject하는 validation을 구분합니다.

  2. 동등 표현을 canonical form으로 바꾸는 normalization을 별도로 구분합니다.

  3. Sanitization은 허용 content model을 정의한 뒤 불허·위험 부분을 제거 또는 변환합니다.

  4. 그 뒤에도 SQL parameterization, HTML output encoding 같은 sink별 방어를 적용합니다.

시험장에서는 이렇게 쓰기

안전한 두 문장 답안

Input Sanitization entfernt oder transformiert unerlaubte beziehungsweise gefährliche Bestandteile gemäß einem definierten, kontextabhängigen Inhaltsmodell. Sie ist von Validierung und Normalisierung zu unterscheiden und ersetzt keine Sink-spezifischen Maßnahmen wie parametrisierte SQL-Anfragen oder Output-Encoding.

자주 틀리는 지점

  • 모든 특수문자를 삭제하는 것으로만 정의하기

  • validation·normalization·sanitization을 하나의 동작으로 합치기

  • sanitization 하나가 SQLi·XSS·command injection을 모두 해결한다고 쓰기

한 줄로 기억하기

Validation은 받기/거부, normalization은 같은 꼴, sanitization은 허용 내용만 남기기, sink control은 parser 경계.

스스로 확인하기

  • 나이 입력과 게시글 입력에 같은 allowlist를 쓸 수 없는 이유는?

  • validation·normalization·sanitization·output encoding은 각각 무엇을 보장하는가?

이 문제가 어려운 이유

짧은 문제 문장 ‘input sanitization이란?’ 안에 정의, 조건, 처리 순서가 압축되어 있습니다. 아래 예시에서는 이를 한 단계씩 펼쳐 확인합니다.

AI 구두시험용 프롬프트

한 문항만 풀어라. 먼저 정답을 열지 말고 90초 안에 답안을 말한 뒤, css-ws2025-26-software-sanitize-001의 채점 프레임으로 스스로 채점하라. 문제: input sanitization이란?

학습 기록

이 문항을 얼마나 이해했나요?