Ch.8 웹 개발 상식
보안 기초 — XSS와 Injection, .env 관리
AI가 만든 코드의 45%에 보안 취약점이 있습니다
AI가 만들어준 코드가 잘 작동합니다. 하지만 보안 전문가가 보면 자물쇠 없는 집과 같습니다. 도둑이 아직 안 들어왔을 뿐, 문은 열려 있습니다.
"작동한다"와 "안전하다"는 전혀 다른 문제입니다. AI는 기능 구현에 집중하지, 보안까지 신경 쓰지 않는 경우가 많습니다.
웹 보안의 기본 위협과 방어법을 알면 AI가 만든 코드의 보안 허점을 발견하고 수정을 요청할 수 있습니다.
핵심 내용
보안은 "작동한다 ≠ 안전하다"입니다. AI가 만든 코드도 예외가 아닙니다.
비유하면 자물쇠 없는 집입니다. 도둑이 안 들어온 건 운이 좋았을 뿐, 문이 잠겨있는 건 아닙니다. 웹 보안도 마찬가지로, 공격이 없었다고 안전한 게 아닙니다.
가장 흔한 웹 보안 위협 2가지: XSS와 SQL Injection
XSS = Cross-Site Scripting. 악성 스크립트를 웹페이지에 삽입하는 공격입니다. 이름에 CSS가 아닌 XSS를 쓰는 이유는 CSS(스타일시트)와 구분하기 위해서입니다.
XSS 공격 예시 댓글란에 이런 내용을 입력합니다: `<script>alert('해킹')</script>` 다른 사용자가 이 댓글을 볼 때 스크립트가 실행됩니다. 심하면 쿠키 탈취, 개인정보 유출로 이어집니다. 방어법: 사용자 입력을 화면에 표시할 때 반드시 이스케이프 처리. React는 기본으로 해주지만, `dangerouslySetInnerHTML` 사용 시 주의가 필요합니다.
SQL Injection = 입력값에 SQL 명령어를 삽입하는 공격입니다. 데이터베이스를 직접 조작할 수 있어 매우 위험합니다.
SQL Injection 예시 로그인 비밀번호에 `' OR 1=1 --` 을 입력하면 SQL 쿼리가 변조되어 모든 계정에 접근 가능해집니다. 방어법: 입력값을 직접 SQL에 넣지 말고, Prepared Statement나 ORM(Prisma, Drizzle 등)을 사용합니다.
악성 스크립트를 웹페이지에 삽입하는 공격은?
.env 파일을 실수로 Git에 올렸을 때 파일만 삭제하면 안전하다
핵심 용어
1. API 키는 .env 파일에
코드에 직접 쓰지 않기. 실수로 공개되면 악용 가능
2. .gitignore에 .env 추가
Git에 절대 올리지 않기. 한 번 올라가면 히스토리에 영구 기록
3. 실수로 올렸으면 키 즉시 재발급
Git 히스토리에 남아있으므로 삭제만으론 부족. 키 자체를 교체해야 안전
핵심 정리
- 1XSS = 스크립트 삽입 공격 → React 이스케이프로 방어
- 2SQL Injection = SQL 변조 공격 → ORM/Prepared Statement로 방어
- 3.env 3원칙: .env에 보관, .gitignore에 추가, 유출 시 즉시 재발급
- 4AI 코드도 보안 점검 필수 — 작동 ≠ 안전
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작