CSS Tutor Study Hub 메인으로

Computersystemsicherheit 2025/26

실제 시험 문제 45

Web 감사 · Web Sicherheit / 3.2 Schwachstellenanalyse einer Webanwendung

Web 감사

문제

근거 신뢰도 높음실제 시험지 대조 완료Web 감사2점

독일어 원문

Welches Risiko besteht bei der Datenübertragung zum Webserver?

한국어 해석

웹서버로 login 정보를 전송할 때 어떤 위험이 있는가?

실제 시험에 제시된 Login 코드·사용자 표

index.html

1 <form action="http://api.example.com/login.php" method="GET">
2   Username: <input type="text" id="user" name="user">
3   Password: <input type="password" id="pw" name="pw">
4   <input type="submit" value="Login">
5 </form>

users

loginpasswordroleemail
adminking2026administratorbob.king@example.com
alicewonderland2002useralice303@gmail.com
bobking2026userbob.king@gmail.com
charlie123456guestch.ar.lie.xxx@gmail.com
eve34@s5wa-rPg5.5readonlyeve.online.1997@gmail.com

login.php

2  $user = $_GET['user'];
3  $pass = $_GET['pw'];
4  $sql = "SELECT * FROM users WHERE login = '$user' AND password = '$pass'";
5  $result = $conn->query($sql);
6  if ($result->num_rows > 0) {
7      echo "<div>Erfolgreich angemeldet!</div>";
8  } else {
9      echo "<div>Fehlgeschlagener Login für Nutzer: " . $user . "</div>";
10 }

출처: 실제 시험지 p13–14. 각 소문제에서 같은 code/data flow를 다시 추적합니다.

실제 시험 코드 취약 줄 하이라이터

vulnerable lineattacker inputparser/contextimpactfix

실제 WiSe 25/26 시험 코드에서 취약한 줄을 선택하고 영향과 수정법을 말해 보세요.

단계별 힌트

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

0/7
채점 기준으로 내 답안 점검하기
  • 1행의 `http://api.example.com/login.php`를 지적한다.
  • 기밀성·무결성 위험을 설명한다.
  • HTTPS/TLS를 해결책으로 쓴다.

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

0/3 slots

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

form action이 `http://`이므로 TLS가 없다. 같은 네트워크의 공격자나 중간자가 username/password를 평문으로 도청·변조할 수 있다. HTTPS를 강제해야 한다.

exam_answer_frame
  • 1행의 `http://api.example.com/login.php`를 지적한다.
  • 기밀성·무결성 위험을 설명한다.
  • HTTPS/TLS를 해결책으로 쓴다.
개념부터 다시 보는 상세 풀이

BEGINNER LESSON

웹 보안: 이 문제를 처음부터 이해하기

ZERO-BASE START

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

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

기초 개념 01

TLS certificate가 확인하는 것과 확인하지 않는 것

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

건물 등기와 열쇠가 맞는지는 확인하지만 그 건물 안 가게가 좋은 물건을 파는지까지 보증하는 것은 아닌 것과 같다.

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

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

Certificate는 특정 domain name과 public key를 연결하고 Certificate Authority(CA)가 그 연결을 확인했다는 서명된 문서다. Browser는 접속한 domain이 certificate의 이름과 맞는지, 신뢰하는 CA가 서명했는지, 유효 기간과 서명 체인이 맞는지 검사한다. 이것은 현재 연결 상대가 그 domain의 private key를 가졌다는 근거를 주지만 사업자의 정직성이나 상품 품질을 보증하지 않는다.

TERMS FROM ZERO

전문 용어를 한 단어씩 풀기

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

Certificate

domain 이름 같은 identity와 public key를 CA의 signature로 연결한 전자 문서입니다.

CA

Certificate Authority로, 정해진 검증 뒤 certificate에 서명하는 신뢰 기관입니다.

Certificate chain

server certificate에서 browser가 신뢰하는 root CA까지 이어지는 서명 관계입니다.

Hostname verification

접속한 domain 이름이 certificate에 허용된 이름과 일치하는지 확인하는 절차입니다.

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

  1. URL의 hostname과 certificate의 SAN 이름을 비교한다.
  2. CA signature와 trust chain을 확인한다.
  3. Server가 certificate public key에 대응하는 private key를 가졌음을 handshake에서 증명한다.
  4. Domain control과 사람·회사에 대한 도덕적 신뢰를 구분한다.

왜 여기서 많이 틀릴까요?

사기 사이트도 자신이 통제하는 domain에 대해서는 valid certificate를 받을 수 있다.

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

기초 개념 02

보안이란 무엇을 지키는 것인가

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

봉투에 넣어 내용을 가리는 것은 기밀성, 봉인 스티커로 개봉 여부를 확인하는 것은 무결성, 발신인의 도장을 확인하는 것은 진위성, 우체국이 문을 열어 편지를 계속 전달하는 것은 가용성에 가깝다.

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

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

컴퓨터 보안은 막연히 ‘안전하게 만들기’가 아니라 지켜야 할 성질을 구분하는 일에서 시작한다. 기밀성(Vertraulichkeit, confidentiality)은 허가받지 않은 사람이 내용을 읽지 못하게 하는 것, 무결성(Integrität, integrity)은 내용이 몰래 바뀌지 않았음을 확인하는 것, 진위성(Authentizität, authenticity)은 상대나 데이터의 출처가 주장과 맞는지 확인하는 것이다. 서비스가 필요할 때 계속 동작하는 성질은 가용성(Verfügbarkeit, availability)이라고 한다.

TERMS FROM ZERO

전문 용어를 한 단어씩 풀기

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

Asset

공격자로부터 지키려는 대상입니다. 파일, 비밀번호, 서비스 가용성, 사람의 개인정보가 모두 asset이 될 수 있습니다.

Confidentiality

허가받지 않은 사람이 내용을 읽지 못하게 하는 기밀성입니다.

Integrity

데이터나 시스템이 허가 없이 바뀌지 않았음을 보장하려는 무결성입니다.

Availability

정당한 사용자가 필요할 때 서비스와 데이터에 접근할 수 있는 가용성입니다.

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

  1. 문제에서 숨김, 변조 탐지, 신원 확인, 서비스 중단 중 무엇을 묻는지 찾는다.
  2. 한 기술이 네 목표를 모두 자동으로 제공한다고 가정하지 않는다.
  3. 공격자가 무엇을 할 수 있는지와 지켜야 할 목표를 한 문장씩 분리한다.

왜 여기서 많이 틀릴까요?

TLS, 암호화, 서명, hash처럼 익숙한 단어가 나오더라도 그 기술이 제공하지 않는 목표까지 확대해서 쓰면 안 된다.

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

핵심부터 말하면 HTTP는 봉투 없이 엽서를 보내는 것과 같다. POST로 바꾸어도 TLS가 없으면 전송 내용은 보호되지 않는다.

이 글에서 익힐 것

  • 웹서버로 login 정보를 전송할 때 어떤 위험이 있는가?

  • 이 문항에 연결된 2개 기초 개념과 8개 전문 용어를 자신의 말로 설명한다.

  • 정의만 외우지 않고 구체적인 입력·message·code 흐름을 단계별로 재현한다.

  • 시험 답안에서 결론과 근거, 조건 또는 한계를 함께 쓴다.

이 문제가 어려운 이유

문제 문장은 짧지만 초보자가 이미 안다고 가정하는 용어와 중간 단계가 숨어 있습니다. 이 페이지에서는 ‘웹서버로 login 정보를 전송할 때 어떤 위험이 있는가?’를 바로 외우지 않고, 아래 연결 개념을 일상 장면에서 시작해 실제 시스템 순서로 바꿉니다.

문제가 묻는 것

웹서버로 login 정보를 전송할 때 어떤 위험이 있는가?

문제가 요구하는 동사와 답의 개수를 먼저 표시하고, 등장 주체·입력·처리 순서·보안 효과·남는 한계를 차례로 적습니다.

먼저 알아야 할 개념

  • TLS certificate가 확인하는 것과 확인하지 않는 것

    Certificate는 특정 domain name과 public key를 연결하고 Certificate Authority(CA)가 그 연결을 확인했다는 서명된 문서다. Browser는 접속한 domain이 certificate의 이름과 맞는지, 신뢰하는 CA가 서명했는지, 유효 기간과 서명 체인이 맞는지 검사한다. 이것은 현재 연결 상대가 그 domain의 private key를 가졌다는 근거를 주지만 사업자의 정직성이나 상품 품질을 보증하지 않는다.

    건물 등기와 열쇠가 맞는지는 확인하지만 그 건물 안 가게가 좋은 물건을 파는지까지 보증하는 것은 아닌 것과 같다.

  • 보안이란 무엇을 지키는 것인가

    컴퓨터 보안은 막연히 ‘안전하게 만들기’가 아니라 지켜야 할 성질을 구분하는 일에서 시작한다. 기밀성(Vertraulichkeit, confidentiality)은 허가받지 않은 사람이 내용을 읽지 못하게 하는 것, 무결성(Integrität, integrity)은 내용이 몰래 바뀌지 않았음을 확인하는 것, 진위성(Authentizität, authenticity)은 상대나 데이터의 출처가 주장과 맞는지 확인하는 것이다. 서비스가 필요할 때 계속 동작하는 성질은 가용성(Verfügbarkeit, availability)이라고 한다.

    봉투에 넣어 내용을 가리는 것은 기밀성, 봉인 스티커로 개봉 여부를 확인하는 것은 무결성, 발신인의 도장을 확인하는 것은 진위성, 우체국이 문을 열어 편지를 계속 전달하는 것은 가용성에 가깝다.

예제로 확인하기

  • TLS certificate가 확인하는 것과 확인하지 않는 것을 이 문제에 대입하기

    건물 등기와 열쇠가 맞는지는 확인하지만 그 건물 안 가게가 좋은 물건을 파는지까지 보증하는 것은 아닌 것과 같다.

    1. URL의 hostname과 certificate의 SAN 이름을 비교한다.

    2. CA signature와 trust chain을 확인한다.

    3. Server가 certificate public key에 대응하는 private key를 가졌음을 handshake에서 증명한다.

    4. Domain control과 사람·회사에 대한 도덕적 신뢰를 구분한다.

    위 순서를 문제 문장 ‘웹서버로 login 정보를 전송할 때 어떤 위험이 있는가?’에 적용하면, 이 문항의 핵심 결론은 form action이 `http://`이므로 TLS가 없다. 같은 네트워크의 공격자나 중간자가 username/password를 평문으로 도청·변조할 수 있다. HTTPS를 강제해야 한다.입니다.

  • 보안이란 무엇을 지키는 것인가을 이 문제에 대입하기

    봉투에 넣어 내용을 가리는 것은 기밀성, 봉인 스티커로 개봉 여부를 확인하는 것은 무결성, 발신인의 도장을 확인하는 것은 진위성, 우체국이 문을 열어 편지를 계속 전달하는 것은 가용성에 가깝다.

    1. 문제에서 숨김, 변조 탐지, 신원 확인, 서비스 중단 중 무엇을 묻는지 찾는다.

    2. 한 기술이 네 목표를 모두 자동으로 제공한다고 가정하지 않는다.

    3. 공격자가 무엇을 할 수 있는지와 지켜야 할 목표를 한 문장씩 분리한다.

    위 순서를 문제 문장 ‘웹서버로 login 정보를 전송할 때 어떤 위험이 있는가?’에 적용하면, 이 문항의 핵심 결론은 form action이 `http://`이므로 TLS가 없다. 같은 네트워크의 공격자나 중간자가 username/password를 평문으로 도청·변조할 수 있다. HTTPS를 강제해야 한다.입니다.

정답까지 사고 과정

  1. 1행의 `http://api.example.com/login.php`를 지적한다.

  2. 기밀성·무결성 위험을 설명한다.

  3. HTTPS/TLS를 해결책으로 쓴다.

시험장에서는 이렇게 쓰기

핵심 해설

form action이 `http://`이므로 TLS가 없다. 같은 네트워크의 공격자나 중간자가 username/password를 평문으로 도청·변조할 수 있다. HTTPS를 강제해야 한다.

시험 답안으로 정리하기

  • 1행의 `http://api.example.com/login.php`를 지적한다.

  • 기밀성·무결성 위험을 설명한다.

  • HTTPS/TLS를 해결책으로 쓴다.

자주 틀리는 지점

  • GET 문제와 HTTP 문제를 하나로 뭉개지 않는다.

  • POST가 암호화라고 쓰지 않는다.

채점 포인트

  • 1행의 `http://api.example.com/login.php`를 지적한다.

  • 기밀성·무결성 위험을 설명한다.

  • HTTPS/TLS를 해결책으로 쓴다.

한 줄로 기억하기

HTTP는 봉투 없이 엽서를 보내는 것과 같다. POST로 바꾸어도 TLS가 없으면 전송 내용은 보호되지 않는다.

스스로 확인하기

  • HTTPS가 제공하는 세 가지 핵심 보호를 말해 보라.

AI 구두시험용 프롬프트

한 문항만 풀어라. 먼저 정답을 열지 말고 90초 안에 답안을 말한 뒤, css-ws2025-26-web-php-001의 채점 프레임으로 스스로 채점하라. 문제: 웹서버로 login 정보를 전송할 때 어떤 위험이 있는가?

학습 기록

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