~/VibeHandbook
$39

챕터 18 · 05

파일 처리와 업로드

사용자가 파일을 올리게 하는 것은 조용한 지뢰밭이고, AI의 첫 초안은 거의 그 구멍들을 닫지 않는다:

  • 타입과 크기를 검증하라. 제한이 없으면 누가 10 GB 파일이나 실행 파일을 올린다. 파일명 확장자가 아니라 실제 내용을 점검하라 — 확장자는 누구나 바꿔 달 수 있다.
  • 파일명을 절대 신뢰하지 말라. ../../etc/passwd 같은 파일명은 순진한 핸들러가 의도한 폴더 밖에 쓰게 만들 수 있다(이것을 path traversal이라 한다). 제공된 이름을 쓰는 대신 당신만의 안전한 이름을 생성하라.
  • 업로드를 당신 앱과 같은 origin에서 서빙하지 말고, 업로드된 파일이 코드로 실행되게 두지 말라. 당신 서버가 실행할 폴더에 떨어진 사용자 제공 파일은 장악으로 가는 직통로다.

이걸 전부 직접 만들 필요는 없다 — 스토리지 서비스가 대부분을 처리한다 — 하지만 요청은 해야 한다, AI는 자진해서 하지 않으니까. "업로드 기능을 추가해"라고 하면 정상 경로를 얻는다. "파일 타입과 크기를 검증하고, 이미지가 아니면 거부하고, 생성된 이름으로 파일을 저장하는 업로드 기능을 추가해"라고 하면 안전에 더 가까운 무언가를 얻는다.

오프라인으로 보고 싶으세요?

PDF + EPUB + 다운로드형 프롬프트 라이브러리 + 버전 업데이트를 받으세요.

$ PDF 받기 — $39