기초 개념, 기술 면접 대비

보안 면접 퀴즈

안전한 시스템의 기초

인증, 인가, 암호화, OWASP Top 10 등 백엔드 보안의 핵심을 학습하세요.

로그인 없이 풀어보기
24개 문제, 무료

학습할 핵심 개념

인증 vs 인가
JWT와 세션
OAuth 2.0 플로우
HTTPS와 인증서
OWASP Top 10
SQL Injection 방어
CORS와 보안

핵심 개념 미리보기

보안 면접에서 꼭 나오는 개념을 미리 확인하세요

OWASP Top 10

핵심

반복되는 취약점 목록이고, 공통 뼈대는 하나입니다. 외부에서 온 입력과 요청을 신뢰하지 않는 것입니다.

OWASP Top 10

주요 취약점

신뢰 경계 밖에서 온 값은 모두 의심하고 경계 안에서 검사한다 경계 밖 경계 안 브라우저 입력 숨긴 필드 요청 머리말 여기서 검사한다 경계 밖 값은 사용자가 마음대로 바꿀 수 있다 그래서 화면에서 막은 것은 막은 것이 아니다 권한도 같다. 화면에서 버튼을 숨기는 것은 권한 검사가 아니다
순위취약점설명방어
1InjectionSQL/NoSQL 삽입PreparedStatement, ORM
2인증 실패약한 비밀번호, 세션 탈취MFA, 토큰 관리
3XSS악성 스크립트 삽입입력 이스케이프, CSP
4CSRF위조 요청CSRF 토큰, SameSite 쿠키

왜 같은 것이 반복되나

목록의 항목은 바뀌어도 원인은 대개 셋 중 하나입니다.

신뢰 경계를 잊는다. 브라우저에서 온 값은 사용자가 바꿀 수 있습니다. 숨긴 필드, 요청 머리말, 쿠키 값이 다 그렇습니다. 화면에서 막은 것은 막은 것이 아니고, 서버가 다시 검사해야 막힌 것입니다.

권한 검사를 화면에 둔다. 버튼을 숨기는 것은 권한 검사가 아닙니다. 주소를 아는 사람은 그대로 부릅니다. 그리고 남의 것을 볼 수 있는지는 요청마다 그 자원의 주인이 맞는지 확인해야 알 수 있습니다. 로그인했는지만 보는 것으로는 부족합니다.

기본값이 위험하다. 관리 화면이 열려 있거나, 오류 메시지가 내부 구조를 보여 주거나, 쓰지 않는 기능이 켜져 있는 것입니다. 새로 만든 것이 아니라 켜 둔 것을 끄지 않은 것이 문제가 됩니다.

무엇을 먼저 막나

순서무엇왜 먼저인가
1서버에서 입력 검사대부분의 항목이 여기서 시작한다
2요청마다 자원 소유 확인남의 것을 보는 사고가 가장 흔하다
3비밀을 코드와 로그에서 빼기한 번 새면 되돌릴 수 없다

의존성 갱신도 여기 들어갑니다. 우리가 쓴 코드가 아니라 가져다 쓴 것에서 나는 문제가 많고, 그것은 새로 짜서 막는 것이 아니라 버전을 올려서 막습니다.

실무 포인트

  • SQL Injection: PreparedStatement는 기본, ORM 사용이 가장 안전
  • XSS: 사용자 입력을 그대로 HTML에 렌더링하지 않기
  • HTTPS 필수: 모든 통신 암호화
  • Spring Security, Helmet.js 등 프레임워크 보안 기능 활용
면접에서 이렇게 나옵니다
  • Q.OWASP Top 10 중 가장 중요한 3가지는?
  • Q.SQL Injection을 어떻게 방지하나요?
  • Q.XSS와 CSRF 차이를 설명해주세요

암호화 기초

핵심

암호화 기초

암호화 방식

같은 키로 잠그고 여는 방식과 서로 다른 키를 쓰는 방식의 차이다 키가 하나면 잠금 열기 같은 키를 쓴다. 빠르다 그 키를 상대에게 어떻게 전할지가 남는다 키가 둘이면 공개키 비밀키 공개키는 남에게 줘도 된다 전할 문제가 사라진다. 대신 느려서 큰 데이터에 쓰지 않는다 그래서 둘을 섞는다. 키를 나눌 때만 둘째, 데이터는 첫째다
방식키속도용도
대칭키 (AES)동일 키빠름데이터 암호화
비대칭키 (RSA)공개키+개인키느림키 교환, 서명
해시 (SHA, bcrypt)키 없음 (단방향)-비밀번호 저장

HTTPS (TLS) 동작 과정

  1. 클라이언트 → 서버: 지원하는 암호화 방식 전송
  2. 서버 → 클라이언트: 인증서(공개키 포함) 전송
  3. 비대칭키로 대칭키 교환
  4. 이후 대칭키로 통신 (성능 때문)

무엇을 지켜 주고 무엇을 못 지켜 주나

암호화는 오가는 길과 저장된 것을 지킵니다. 그 밖은 지켜 주지 않습니다.

지켜 주는 것못 지켜 주는 것
중간에서 엿보는 것서버에 이미 들어온 뒤의 처리
저장 매체를 통째로 가져가는 것권한이 있는 계정으로 조회하는 것
오가는 값을 바꿔치기하는 것잘못 만든 권한 검사

그래서 암호화를 켰다는 것이 안전하다는 뜻이 아닙니다. 실제 사고는 대개 권한 검사나 새어 나간 키에서 납니다.

키가 새면 되돌릴 수 없다

암호문을 지키는 것은 키뿐입니다. 키가 새면 그 키로 잠근 모든 것이 열립니다.

코드와 저장소에 키를 두지 않는다
로그와 오류 메시지에 값이 찍히지 않게 한다
바꿀 수 있게 만들어 둔다. 언젠가 바꿔야 한다

마지막이 자주 빠집니다. 키를 바꾸려면 옛 키로 잠근 것을 새 키로 다시 잠그는 경로가 있어야 하고, 그것을 처음에 만들어 두지 않으면 나중에는 바꾸지 못합니다.

실무 포인트

  • 비밀번호 저장: bcrypt/scrypt 사용 (MD5/SHA 금지!)
  • JWT 서명: HMAC(대칭) vs RSA(비대칭) 선택
  • API 키, DB 비밀번호: 환경변수로 관리, 코드에 하드코딩 금지
면접에서 이렇게 나옵니다
  • Q.대칭키 vs 비대칭키 암호화 차이는?
  • Q.HTTPS에서 두 방식을 함께 쓰는 이유는?
  • Q.비밀번호를 DB에 어떻게 저장해야 하나요?

SQL 인젝션과 파라미터 바인딩

핵심

SQL 인젝션과 파라미터 바인딩

무엇이 뚫리는가

  • 입력을 SQL 문자열에 이어 붙이면 값이 아니라 구문으로 해석된다
  • OR 1=1 한 조각으로 WHERE 조건이 무력화되고 테이블 전체가 응답에 실린다
  • UNION SELECT로 다른 테이블(비밀번호 해시, 결제 정보)까지 끌어올 수 있다

방어 우선순위

문자열을 이어 붙이면 입력이 코드가 되고 자리표시자를 쓰면 값으로만 간다 이어 붙이면 질의문 문자열 더하기 사용자 입력 DB 는 합쳐진 한 덩어리를 코드로 읽는다 입력에 따옴표와 명령을 넣으면 그것도 코드가 된다 자리표시자를 쓰면 질의문은 먼저 굳는다 값은 따로 간다 코드와 값이 섞이지 않으므로 입력이 무엇이든 값으로만 쓰인다
순서방법비고
1파라미터 바인딩(PreparedStatement)값과 구문을 분리
2ORM, 쿼리빌더의 바인딩 APIJPA, MyBatis #{}
3화이트리스트 검증바인딩 불가한 자리 전용
4최소 권한 DB 계정뚫려도 피해 범위 축소

자리표시자를 쓸 수 없는 곳

값은 자리표시자로 넘길 수 있습니다. 그런데 값이 아닌 것은 못 넘깁니다.

넘길 수 있나예
값조건에 들어가는 이름, 번호
표나 열 이름못 넘긴다
정렬 방향못 넘긴다
조건 개수가 변하는 목록개수만큼 자리표시자를 만들어야 한다

가운데 둘이 사고가 납니다. 정렬 열을 사용자 입력으로 받아 문자열에 이어 붙이는 경우입니다.

그때는 허용 목록으로 다룹니다. 미리 정해 둔 이름 중 하나인지 확인하고, 아니면 거절합니다. 걸러내는 것이 아니라 허용한 것만 통과시키는 방향입니다.

권한이 방어의 마지막 겹이다

질의를 안전하게 만들어도 그 계정이 무엇이든 할 수 있으면 피해가 큽니다.

읽기만 하는 경로는 읽기 전용 계정으로
표를 지우거나 만드는 권한은 애플리케이션 계정에 두지 않는다

뚫렸을 때의 피해 범위를 줄이는 것이라 앞의 방어와 성격이 다릅니다. 둘을 함께 둡니다.

실무 포인트

  • 바인딩이 안 되는 자리가 있다: 테이블과 컬럼명, ORDER BY 컬럼은 값이 아니라 식별자다 → 화이트리스트로만 처리
  • MyBatis ${}는 문자열 치환, #{}가 바인딩이다. 코드 리뷰에서 ${} 검색은 필수
  • 이스케이프 함수를 직접 만들지 않는다. 인코딩, 주석, 다중바이트 우회를 못 막는다
  • DB 에러 메시지를 그대로 응답에 노출하면 스키마와 드라이버 정보가 유출된다
면접에서 이렇게 나옵니다
  • Q.레거시 코드에서 문자열로 조합된 쿼리를 발견했다. 어떤 순서로 조치하겠습니까?
  • Q.정렬 컬럼을 사용자가 고르는 목록 API는 왜 파라미터 바인딩만으로 안전해지지 않나요?
  • Q.ORM을 쓰면 SQL 인젝션이 원천 차단된다고 볼 수 있나요?

더 많은 개념과 문제는 가입 후 이용할 수 있어요

먼저 5문제 맛보기

보안 면접 빈출 질문

실제 면접에서 자주 나오는 질문들입니다

Q.

OWASP Top 10 중 가장 중요한 3가지는?

OWASP Top 10 개념 정리 보기
Q.

SQL Injection을 어떻게 방지하나요?

OWASP Top 10 개념 정리 보기
Q.

XSS와 CSRF 차이를 설명해주세요

OWASP Top 10 개념 정리 보기
Q.

입력값 검증은 클라이언트/서버 중 어디서 해야 하나요?

OWASP Top 10 개념 정리 보기
Q.

대칭키 vs 비대칭키 암호화 차이는?

암호화 기초 개념 정리 보기
Q.

HTTPS에서 두 방식을 함께 쓰는 이유는?

암호화 기초 개념 정리 보기
Q.

비밀번호를 DB에 어떻게 저장해야 하나요?

암호화 기초 개념 정리 보기
Q.

bcrypt vs SHA-256 차이는?

암호화 기초 개념 정리 보기

이런 점이 좋아요

보안 취약점 이해

안전한 코드 작성

실무 보안 역량

지금 바로 시작하세요

무료로 보안 퀴즈를 풀고, AI 오답 분석으로 실력을 키우세요.