최범균 님의 "주니어 백엔드 개발자가 반드시 알아야 할 실무 지식" 책을 정리한 포스팅 입니다.
1. 중요한 보안
2. 인증과 인가
3. 데이터 암호화
4. HMAC을 이용한 데이터 검증
5. 방화벽으로 필요한 트래픽만 허용하기
- 서버가 외부에 노출되기 시작하면 다양한 공격이 들어옴
- 이를 방지하려면 필요한 만큼만 네트워크 접근을 허용하고 나머지는 차단해야 함
웹 방화벽
- 웹 기반 위협을 감지하고 차단함
- SQL Injection, XSS 공격 등
OS 방화벽
6. 감사 로그(audit log) 남기기
- 컴플라이언스나 정책을 지키기 위해 기록함
- ✅ 활동을 입증하는 증거로 사용됨
- ✅ 보안 사고 발생 시, 문제 해결에 큰 도움이 됨
예시
더보기
- 사용자 로그인/로그아웃 내역
- 설정 변경 내역 (암호 초기화 등)
- 민감 데이터 조회/수정 내역
7. 데이터 노출 줄이기
- 서비스 운영자는 백오피스에서 다양한 고객 정보를 조회할 수 있음
- 민감 데이터를 쉽게 획득하게 할수록 보안에 취약함
- ✅ 서버측에서 응답 시, 민감 데이터만 마스킹하기
- ✅ 소수 인원에게만 민감 데이터 접근 권한 부여
- ✅ 비정상적인 경로로 민감 데이터 수집하는 이상 접근을 감지하기
- ✅ 로그 메시지도 민감데이터 마스킹하기
8. 비정상 접근 처리
- 사용자에게 경고하는 것을 넘어 계정 중지 같은 정책을 적용할 수 있음
예) 비정상 접근
더보기
- 평소와 다른 장소/다른 기기로 로그인
- 여러 차례 로그인 실패
- 동일한 URL이나 API를 반복해서 접근
- 권한이 없는 URL이나 API를 반복해서 접근
9. 시큐어 코딩
- Prepared Statement (input 값에 포함된 특수 문자를 SQL 문이 인식하지 못하게 변환함)
- 입력값 검증 (길이 제한, 필수 여부 등)
- 민감 정보 암호화 (주민 번호, 운전 면허 번호 등)
- CORS 허용
10. 개인 보안
- 개발자의 PC는 다양한 서버에 접속할 수 있음
- ✅ 권한이 부여된 만큼 보안 위험에 민감해야 함
- ❌ 불분명한 파일을 다운받거나 이메일의 첨부 파일을 실행하기