半人前技術者の成長記

挫折と妄想を膨らませながら成長するだろう技術者の日記

PHP

PHPでファイルアップロード時に気をつける点

投稿日:

ファイルアップロード処理を作ることになったので、
ファイルサイズやファイルの形式以外に気をつける点が無いか、
気になったので調べた結果をまとめて置きます。

  • 拡張子のチェック(アプリケーション)
  • マジックバイトのチェック(アプリケーション)
  • 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。

  • スクリプトが確保できる最大メモリサイズ(Webサーバー)
  • pc

    pc

    -PHP
    -, , ,

    執筆者:

    関連記事

    no image

    PhingでSSHする

    サーバーへアプリケーションをリリースするために、Capistranoを使っている。 ただ、Rubyに詳しくないので何か問題が発生した場合に対処できない可能性が高い。 そこで、PHPベースのPhingを …

    no image

    【PHP】アルファベット順に出力

    PHPで、「A、B、C… という順を配列などを使わずにできるのか」という問題があり、調べた。 文字列をインクリメントする方法があるが、逆にデクリメントできないということがマニュアルを読んで分かった。 …

    no image

    CentOSにPHPUnitをインストール

    CentOSにPHPUnitをインストールする手順の覚え書き。 まず、PHPUnitを取得先を追加する。 $ sudo pear config-set auto_discover 1 config-s …

    no image

    ownCloudをインストール

    Amazon S3、Dropbox、Yahoo!ボックスなどのオンラインストレージサービスが最近多くなってきました。 容量制限、転送料などによる課金がある。 Dropboxのようなストレージを自前で

    no image

    EC-CUBEのプライマリキーの採番の仕組み

    EC-CUBE Ver2.11のおすすめ商品の登録機能を調べた時に プライマリキーの採番をどうやっているのか、 気になったので調べた内容の備忘録。 まず、 html/admin/contens/rec …

    右上部広告