Skip to content

[Feat] 입력 크기 무제한 방어 #120

Description

@pearseona

🏷️ 이슈 유형

  • feat : 새로운 기능 추가
  • fix : 버그 수정
  • refactor : 동작 변경 없는 구조 개선
  • docs : README 등 문서 추가/수정
  • chore : 설정, 빌드, 의존성 패키지 변경
  • 기타 : 설명 추가 작성

💡기능

현재 프로덕션 경로를 포함한 모든 요청 진입점에 입력 길이 상한이 없어, 대용량 페이로드로 형태소 분석/추론 파이프라인에 부하를 주거나(서비스 거부, Dos) 무제한 챗 입력으로 Bedrock LLM 비용을 폭증시킬 수 있다.

각 요청 스키마에 max_length(및 리스트 길이 상한)를 추가해, 파이프라인 진입 전에 초과 입력을 조기 거부한다.

🛠️할 일 목록

  • AnalysisRequestedPayload.contentmax_length 추가 (프로덕션 경로 우선)
  • SmishingAnalysisRequest.textmax_length 추가
  • ChatMessage.contentmax_length, ChatRequest.messages 리스트에 최대 개수(max_length) 추가
  • 초과 입력이 kiwipiepy/sklearn/Bedrock 호출 이전에 거부되는지 확인 (검증 단계 위치)
  • 초과 시 명확한 검증 오류(422 등)로 응답되고, 원문/PII가 로그·응답에 노출되지 않는지 확인
  • 경계값(정상 최대 길이 통과 / 1자 초과 거부) 단위 테스트 추가

📌 참고 사항 / 제약 조건

  • 상한값은 실제 SMS/문자 최대 길이 + 여유를 기준으로 산정 (정상 문자가 잘리지 않도록). 챗은 대화 맥락 길이를 고려해 별도 산정.
  • 프로덕션 실경로는 RabbitMQ(AnalysisRequestedPayload)이므로 이 스키마가 최우선. HTTP 경로도 함께 막아야 우회 불가.
  • 완화 요소이지 대체가 아님 — Bedrock 비용은 상한 외에 별도 rate limit/quota와 병행 검토 권장.
  • SafeFam_BE 측에서도 동일 입력이 유입되므로, BE 요청 크기 제한과 값 정합성 맞추면 좋음(경계 불일치 방지).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

featNew feature or functional additions to the application

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions