~/VibeHandbook
$39

18 · 05

ファイルの取り扱いとアップロード

ユーザーにファイルをアップロードさせるのは静かな地雷原で、AIの初稿はほぼ必ず穴をふさいでくれない。

  • 型とサイズを検証する。 制限がなければ、誰かが10GBのファイルや実行可能ファイルをアップロードする。誰でもリネームできる拡張子だけでなく、実際の中身をチェックすること。
  • ファイル名を決して信用しない。 ../../etc/passwd のようなファイル名は、素朴なハンドラに意図したフォルダの外へ書き込ませてしまう(これを path traversal という)。提供された名前を使う代わりに、自前の安全な名前を生成すること。
  • アップロードをアプリと同じオリジンから配信しないこと、そしてアップロードされたファイルがコードとして実行されないようにすること。サーバーが実行するフォルダにユーザー提供のファイルが落ちることは、乗っ取りへの直通路だ。

これをすべて自分で作る必要はない——ストレージサービスがほとんどを処理してくれる——が、頼まなければならない。AIは自分からは申し出ないからだ。「アップロード機能を追加して」では正常系しか得られない。「ファイルの型とサイズを検証し、画像以外はすべて拒否し、生成した名前でファイルを保存するアップロード機能を追加して」と言えば、安全に近いものが得られる。

オフラインでも読みたい?

PDF + EPUB + ダウンロード可能なプロンプトライブラリ + バージョンアップデートを入手しよう。

$ PDFを入手 — $39