ファイルアップロード処理を作ることになったので、
ファイルサイズやファイルの形式以外に気をつける点が無いか、
気になったので調べた結果をまとめて置きます。
- 拡張子のチェック(アプリケーション)
- マジックバイトのチェック(アプリケーション)
- 1ファイル当りのサイズの制限(Webサーバー)
- 送信できるファイル数の上限(Webサーバー)
- POSTリクエストのボディサイズの制限(Webサーバー)
- スクリプトが確保できる最大メモリサイズ(Webサーバー)
拡張子のチェック(アプリケーション)
アップロードされたファイルの拡張子をチェックする。
JPEGの場合は、「.jpg」や「.JPEG」などになっていること。
マジックバイトのチェック(アプリケーション)
getimagesize関数がPHPにはあるのでこれを利用する。
1ファイル当りのサイズの制限(Webサーバー)
php.iniのupload_max_filesizeを変更する。デフォルトは2Mbyte。
送信できるファイル数の上限(Webサーバー)
php.iniのmax_file_uploadsを制限する。デフォルトは20。
POSTリクエストのボディサイズの制限(Webサーバー)
php.iniのpost_max_sizeを制限する。デフォルトは8Mbyte。