안녕하세요. 요즘 업로드가 띄엄띄엄하네요. 깁스한 다리가 피가 쏠려 자주 저려서 누워있느라 운동도 아무것도 못했네요. 그래도 내일이면 병원가서 진찰 받으니 다시 평상시처럼 공부하고 업로드하는 것에 집중할 수 있을 것 같습니다. 저번 시간에는 클라이언트 사이드 캐시를 마무리로 캐시에 대해 전박적인 얘기를 다뤄봤습니다. 이번 시간에는 웹 보안 지식에 대해서 학습을 할 예정이며 아마 6편 분량으로 나뉠 것으로 예상이 되네요. 그럼 시작하겠습니다.
웹 서비스를 개발하다 보면 회원가입, 로그인, 게시글 작성, 결제, 예약, 관리자 기능처럼 사용자 정보와 권한이 연결된 기능을 자주 다루게 됩니다.
이때 가능이 정상적으로 동작하는 것 뿐만 아니라 사용자의 비밀번호가 안전하게 저장되는지, 다른 사용자의 데이터에 접근할 수 없는지, 통신 과정에서 정보가 노출되지 않는지, 허용되지 않은 요청을 막을 수 있는지까지 함께 고려해야 합니다.
웹 보안
웹 보안은 웹 애플리케이션에서 사용자 정보, 서비스 데이터, 서버 자원 등을 보호하기 위한 기술과 설계 방식입니다.
단순히 해킹을 막는 것만을 의미하는 것이 아니라, 사용자가 허용된 범위 안에서만 기능을 사용할 수 있도록 제한하고, 데이터가 변조되거나 노출되지 않도록 보호하며, 잘못된 요청이나 공격으로부터 서비스를 안정적으로 유지하는 과정까지 포함합니다.
즉, 웹 보안은 기능을 막는 장치가 아닌 서비스가 신뢰할 수 있게 동작하도록 만드는 기본 조건입니다.
웹 서비스에서 보호해야 하는 대상
| 보호 대상 | 예시 | 필요한 이유 |
| 사용자 정보 | 이메일, 비밀번호, 이름, 전화번호 | 개인정보 유출 방지 |
| 인증 정보 | JWT, 세션, 쿠키 | 계정 탈취 방지 |
| 권한 정보 | 일반 사용자, 관리자 | 허용되지 않은 기능 접근 방지 |
| 서비스 데이터 | 게시글, 주문, 결제, 예약 정보 | 데이터 변조 및 오남용 방지 |
| 서버 자원 | API, DB, 파일 저장소 | 비정상 요청과 공격 방지 |
백엔드 개발자는 단순히 요청을 받아 응답을 내려주는 역할만 하는 것이 아니라, 요청한 사용자가 누구인지, 해당 기능을 사용할 권한이 있는지, 전달된 데이터가 신뢰할 수 있는지까지 확인해야 합니다.
인증, 인가, 암호화, 무결성의 차이
웹 보안에 대해 자세히 알아가기 앞서 인증, 인가, 암호화, 무결성의 차이에 대해서 이해해야 합니다.
| 관점 | 의미 | 예시 |
| 인증 | 사용자가 누구인지 확인 | 로그인, JWT, 세션 |
| 인가 | 무엇을 할 수 있는지 확인 | 관리자 API 접근 제한 |
| 암호화 | 데이터를 알아볼 수 없게 보호 | HTTPS, TLS |
| 무결성 | 데이터가 변조되지 않았는지 확인 | 해시, 서명 |
- 인증: 사용자가 누구인지 확인하는 과정입니다.
- 예를 들어 로그인 기능은 사용자가 입력한 이메일과 비밀번호를 확인하고, 해당 사용자가 맞는지 검증하는 대표적인 인증 과정입니다.
- 인가: 인증된 사용자가 특정 기능이나 데이터에 접근할 권한이 있는지 확인하는 과정입니다.
- 예를 들어 일반 사용자가 관리자 API를 호출하지 못하도록 막는 것이 인가에 해당합니다.
- 암호화: 데이터를 제 3자가 알아볼 수 없도록 변환하는 과정입니다.
- HTTPS는 브라우저와 서버 사이의 통신 내용을 암호화하여 중간에서 정보가 노출되는 것을 줄여줍니다.
- 무결성: 데이터가 중간에 변경되지 않았는지 확인하는 개념입니다.
- 해시 값이나 전자서명은 데이터가 변조되었는지 확인하는 데 사용될 수 있습니다.
만약 보안 처리가 부족할 경우 다음과 같은 문제가 발생할 수 있습니다.
보안이 부족할 때 발생할 수 있는 문제
| 상황 | 발생 가능한 문제 |
| 비밀번호를 평문으로 저장 | DB 유출 시 사용자 비밀번호가 그대로 노출 |
| 권한 검증 없이 API 제공 | 일반 사용자가 관리자 기능 호출 가능 |
| HTTPS 미적용 | 네트워크 구간에서 민감 정보 노출 가능 |
| CORS 설정 과도하게 허용 | 의도하지 않은 출처의 요청 허용 가능 |
| 입력값 검증 부족 | SQL Injection, XSS 등의 공격 위험 |
| 보안 헤더 미설정 | 브라우저 기반 공격 방어 약화 |
결국 보안은 특정 기술 하나로 해결되는 문제가 아니라 인증, 권한, 데이터 저장, 통신, 브라우저 정책, 서버 설정이 함께 맞물려야 하는 영역입니다.
웹 보안은 기능 개발이 끝난 뒤에 추가로 붙이는 요소가 아닌 처음 설계 단계부터 함께 고려해야하는 기본 조건입니다.
특히 백엔드 개발자는 사용자의 요청을 처리하는 위치에 있기 때문에 인증, 인가, 데이터 검증, 암호화, 권한 제어와 같은 보안 요소를 꾸준히 점검해야 합니다.
오늘은 웹 보안 지식에 대해서 왜 필요한가에 대해 간략하게 알아보았습니다. 웹 보안 지식에 해당되는 부분이 마무리되면 백엔드 로드맵의 3분의 1밖에 남지 않겠네요. 이후에는 프로젝트 관련이나 직접 적용해보는 글 위주로 작성할 것 같아요. 얼른 끝마치고 싶습니다.
다음 시간에는 해시 알고리즘에 대해 설명해보도록 하겠습니다. 수고하셨습니다.
'백엔드 공부' 카테고리의 다른 글
| 웹 보안 지식(3) - HTTPS와 SSL/TLS의 동작 원리 (0) | 2026.05.08 |
|---|---|
| 웹 보안 지식(2) - 해시 알고리즘 (0) | 2026.05.07 |
| 캐시(3) - 클라이언트 사이드 캐시 : 브라우저 캐시와 저장소 (0) | 2026.05.04 |
| 캐시(2) - 서버 사이드 캐시: Redis (0) | 2026.04.28 |
| 캐시(1) - 캐시와 CDN 캐시 (0) | 2026.04.27 |