INSIGHT
ファイルを受け取るアプリ、保存と閲覧まで決めていますか?
受け取ったファイルを、誰がいつ見られ、どこまで残すか。
見積書をアップロードすると、内容を読み取り、案件へ登録する画面ができた。PDFを一件入れると期待した結果が出る。機能は完成したように見えるが、そのファイルはどこへ保存されたのか。誰が開けるのか。読取用の複製は残るのか。削除を頼まれたら、どこまで消すのか。
ファイル受領は「選択して送る」一操作では終わらない。受け付け、検査し、保管し、処理し、見せ、最後に削除するまで続く。
アップロード成功を受領完了とせず、原本と派生物がどこへ進み、誰に見え、いつ消えるかまでを一つの業務として決める。
受け付ける種類を、業務目的から絞る
「一般的なファイルは受け付ける」では、必要な機能も制限も決まらない。見積書の内容を読むなら、業務で実際に届く形式と、読取処理が扱える形式を確認する。画像、PDF、文書、表計算、圧縮ファイルを同じ条件で受ける必要はない。
種類に加え、一件と合計の容量、ページ数や展開後の大きさ、同時に受ける件数、暗号化・パスワード付きの扱いを決める。具体的な上限は外部の数字を借りず、業務上必要なファイルと、保存・解析に使える資源から選ぶ。
拒否する場合は、「アップロードできません」だけで終えない。許可する形式、上限、別の提出方法、問い合わせ先を示す。業務上どうしても例外を受けるなら、通常の保存先へ入れる前に、誰が別の環境で確認するかを決める。
ファイル名と拡張子だけで、中身を決めない
拡張子が「.pdf」でも、中身が期待する形式とは限らない。送信時に付くContent-Typeも、利用者側から指定できるため、それだけを信頼しない。ファイル名には特殊な文字や既存名との重複があり、そのまま保存名へ使うと別ファイルを上書きする可能性もある。
OWASPのFile Upload Cheat Sheet は、業務に必要な拡張子を許可リストで絞り、Content-Typeを信用せず、ファイル署名や内容を検証し、保存名をアプリ側で作り、容量と利用者権限を制限するなど、複数の対策を組み合わせる考え方を示している。
ウイルス対策や隔離環境での確認、文書形式に応じた無害化が使える場合も挙げられている。ただし、拡張子、署名、ウイルス検査のどれか一つで安全が保証されるわけではない。何を組み合わせるかは、受ける形式、処理方法、公開範囲に合わせる。
「拡張子が合う」「検査を通った」という一つの結果を、受入れから公開までの安全保証にしない。
検査中のファイルを、利用可能な場所へ直行させない
受け取った直後のファイルは、検査待ちとして扱う。利用者から見える公開場所や、業務担当が通常使う保存場所へそのまま置かず、状態を「受領」「検査中」「受入れ」「拒否」「要確認」に分ける。
検査中は、解析処理や閲覧を許す担当を限る。拒否されたファイルは、理由と受領記録を残しつつ、本体をどこまで保持するかを決める。要確認なら、隔離した場所で担当者が見て、受け入れるか、別の提出を求めるかを判断する。
AIへ内容を読ませる場合も、受入れ検査と解析を一つにしない。どのサービスへ渡るか、原本か抽出したテキストか、処理後に保存されるか、誰が結果を見られるかを別に確認する。ファイル内の指示がAIの動作へ影響する問題は別の論点だが、少なくとも受入れ前のファイルを自動処理へ直結させない境界を置く。
原本、作業用、抽出結果の保存先と閲覧者を追う
受け入れた一件から、複数のデータが生まれる。利用者が送った原本、解析用の一時コピー、抽出した文字、サムネイル、業務へ登録した項目、バックアップである。一つの画面から消しても、別の場所に残ることがある。
保存場所ごとに、目的、閲覧者、変更できる人、外部サービスへの送信、保存期間、削除担当を書く。利用者が案件Aへ添付したファイルを、案件Bの担当者がURLだけで開けないかも確認する。管理者だからすべて見てよい、と一括で決めず、調査や保守に必要な範囲を明示する。
担当と用意した試験用のアカウントで、案件の担当を外れた後に、以前のURLや共有リンクから開けないかも試す。アップロードした日の権限だけでなく、異動や案件終了後の権限変更が保存先にも反映されるかを見る。リンクに期限があるなら、その期限と失効方法を確認する。
OWASP資料は、別ホストやWeb公開領域の外への保存、アプリを通した取得、認証・認可、最小権限なども挙げている。これはすべてのアプリに同じ構成を要求するものではない。自社の保存場所と公開方法を選ぶ際の確認項目として使う。
一件を受領から削除まで追い、担当を渡す
確認には、許可された試験環境で架空の資料一件を使う。検査・閲覧・削除の試験条件は担当と決め、本番の顧客資料を独断で使わない。受領時に種類と容量が判定される。検査中は通常の利用者から見えない。受入れ後は正しい案件の担当者だけが開ける。解析結果から原本へ戻れる。期限または削除依頼に従って、原本と派生物が扱われる。各段階の操作記録が残る。
記録には、ファイルを安全に識別するID、元の名称、受領者、状態、保存先、解析先、閲覧権限、派生物、保持期限、削除結果を書く。ファイルそのものや機微な内容を一覧へ複製する必要はない。
結果は、業務責任者、情報管理、作成・保守担当で共有する。業務責任者は必要な形式と閲覧者、情報管理は保存・外部送信・削除、保守担当は受入れ状態と記録を確認する。説明できない保存先や削除されない派生物があれば、利用範囲を限定して直す。
受領の合格は、ファイルを読めたことではなく、一件の原本と派生物を最後まで追い、次の担当へ渡せることで判断する。
ファイルの受入れから削除までたどり、預かれる条件を決める
ファイルを受け取れる画面は、入口にすぎない。その後には、内容を確かめる場所、原本と派生物の保存、閲覧権限、削除の仕事が続く。
自分のアプリへ渡す一件を、受領から削除までたどってみたい。許可された環境と架空の資料で、見えた保存先と派生物を記録する。検査の設定、閲覧権限、バックアップの保持など、自分から見えない部分は担当へ確認し、説明できる範囲から扱うファイルを決める。