1. XSS(Cross-Site Scripting) 방어
💡 문제:
- 사용자가 입력한 HTML 태그를 그대로 렌더링하는 취약점 발견 (Stored XSS)
- URL 파라미터에서 자바스크립트 실행이 가능한 이슈 발견 (Reflected XSS)
✅ 해결 방법:
- React에서 기본적으로
dangerouslySetInnerHTML을 사용하지 않도록 하고,DOMPurify를 적용해 안전한 HTML만 허용 - 서버에서
Content-Security-Policy (CSP)헤더를 추가하여 악성 스크립트 실행 방지 escape()를 적용해 HTML 인코딩 처리
📌 예제 코드 (DOMPurify 적용)
import DOMPurify from "dompurify";
const sanitizedHTML = DOMPurify.sanitize(userInput);
<div dangerouslySetInnerHTML={{ __html: sanitizedHTML }} />;
2. CSRF(Cross-Site Request Forgery) 방어
💡 문제:
- 로그인된 사용자의 세션을 악용해, 악성 사이트에서 서버에 요청을 보내는 공격 가능성
✅ 해결 방법:
- CSRF 토큰 적용: API 요청 시 CSRF 토큰을 포함하도록 설정
- SameSite 쿠키 적용:
SameSite=Strict또는SameSite=Lax를 설정하여 외부 도메인에서 쿠키를 사용하지 못하게 설정
📌 예제 코드 (CSRF 토큰 적용 예시 - Express.js)
app.use(csrf({ cookie: true }));
app.post("/transfer", (req, res) => {
if (req.body._csrf !== req.cookies["XSRF-TOKEN"]) {
return res.status(403).json({ error: "CSRF validation failed" });
}
res.send("Transfer success");
});
OWASP Top 10이란?
OWASP(Open Web Application Security Project) Top 10은 웹 애플리케이션에서 가장 흔하게 발생하는 보안 취약점 10가지를 정리한 목록입니다. 주기적으로 업데이트되며, 보안 점검 및 예방을 위한 가이드라인 역할을 합니다.
2021년 OWASP Top 10 목록
| 순위 | 취약점 | 설명 | 예방 방법 |
|---|---|---|---|
| 1 | Broken Access Control | 권한이 없는 사용자가 제한된 기능에 접근 가능 | 권한 검증 철저히, ACL 적용 |
| 2 | Cryptographic Failures | 암호화 미흡으로 데이터 유출 가능 | HTTPS 적용, 안전한 암호화 사용 |
| 3 | Injection (SQLi, XSS 등) | 악성 코드가 입력 필드나 쿼리를 통해 실행됨 | 입력값 검증, SQL 바인딩, escape() 처리 |
| 4 | Insecure Design | 설계 단계에서 보안 고려 부족 | 보안 리뷰 수행, 안전한 설계 패턴 적용 |
| 5 | Security Misconfiguration | 잘못된 설정으로 인한 보안 문제 (디버그 모드 활성화 등) | 안전한 기본 설정 적용, 자동화된 보안 점검 |
| 6 | Vulnerable and Outdated Components | 취약한 라이브러리, 프레임워크 사용 | 최신 버전 유지, 정기적 패치 적용 |
| 7 | Identification and Authentication Failures | 취약한 로그인 방식 (약한 비밀번호, 인증 미흡) | 강력한 패스워드 정책, MFA 적용 |
| 8 | Software and Data Integrity Failures | 코드, 데이터 변조 가능 (서명 없는 업데이트 등) | 코드 서명, CI/CD 보안 강화 |
| 9 | Security Logging and Monitoring Failures | 보안 이벤트 감지가 어려움 | 로그 기록 및 모니터링 강화 |
| 10 | Server-Side Request Forgery (SSRF) | 서버가 악성 URL을 요청하도록 유도 | 외부 요청 검증, 허용 목록(allowlist) 설정 |
'개념원리' 카테고리의 다른 글
| [250313 TIL] 마이크로프론트엔드(딥리서치) (2) | 2025.03.13 |
|---|---|
| [250216 TIL] XSS, SQL injection (0) | 2025.02.16 |
| [250214 TIL] HTTP, OSI7계층(개념정리) (0) | 2025.02.14 |
| [250213 TIL] 추상화, 캡슐화(개념정리) (0) | 2025.02.13 |
| [250213 TIL] TBD vs Github Flow(개념정리) (0) | 2025.02.13 |