質問: 任意ユーザが投稿した(任意のプログラム系の)zipファイルを、PHPで安全にダウンロードする仕組みを作りたいのですが、注意すべきことは何ですか? HTML出力の場合は「特殊文字を HTML エンティティに変換」しますが、ダウンロードの場合に該当する処理はありますか? 例えば、zipファイル形式ではなく、個別ファイルでexe形式以外の拡張子のみokとすれば安全ですか?
回答: サーバーにアンチウイルスソフトをインストールしてアップロードしたコンテンツに対して実行する方法があります。 定義ファイルも更新が必要になりますし、面倒なので、どうしても必要性がない限りはこういう機能は作らない方がいいです。 Linux用のオープンソースのアンチウイルスソフト 単純にダウンロードの実装をしたいなら、以下のようにヘッダーを指定してください。 ``` $filename = 'download.zip'; $filepath = '/home/user/file.zip'; header('Content-Type: application/force-download'); header('Content-Length: '.filesize($filepath)); header('Content-Disposition: attachment; filename="'.$filename.'"'); readfile($filepath); ```