Skip to content

[Security] A05: 입력 검증 및 Injection 방어 필요 #2

@serithemage

Description

@serithemage

OWASP 카테고리

  • A05:2025 - Injection

심각도

🔴 Critical

현황

서버/클라이언트 모두 입력 검증이 없음

발견된 문제

1. 서버 측 검증 없음

// backend/lambda/src/index.ts:63
const newTodo = await todoService.createTodo(JSON.parse(body));  // 검증 없음
  • JSON.parse 후 직접 DB 저장
  • 스키마 검증 없음
  • 필드 타입/길이 미검증

2. 클라이언트 측 검증 미흡

// frontend/src/components/AddTodoForm.tsx:20-22
onSubmit({
  title: title.trim(),  // trim만 수행
  description: description.trim() || undefined,
});
  • XSS 방어 없음
  • 입력 길이 제한 없음

3. XSS 가능성

악의적 입력 예시:

{
  "title": "<img src=x onerror='alert(document.cookie)'>",
  "description": "<script>fetch('https://attacker.com')</script>"
}

영향받는 파일

  • backend/lambda/src/index.ts
  • backend/lambda/src/todoService.ts
  • frontend/src/components/AddTodoForm.tsx
  • frontend/src/components/EditTodoDialog.tsx

권장 조치

  1. 백엔드에 Joi/Zod 스키마 검증 추가
  2. 입력 길이 제한 (title: 100자, description: 500자 등)
  3. 프론트엔드에 DOMPurify로 sanitization
  4. API Gateway Request Validator 설정

참고

Metadata

Metadata

Assignees

No one assigned

    Labels

    criticalCritical prioritysecuritySecurity related issues

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions