半人前技術者の成長記

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

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

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

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

    no image

    PhingでSSHする

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

    no image

    ownCloudでDropboxのようにファイル共有

    DropBoxのようにファイルを共有するために固有のURLを発行する仕組みは、ownCloudにもあります。 ownCloudには、以下の4つの機能があります。 共有のURLの発行 共有の有効期限の設 …

    no image

    CentOSにPHPUnitをインストール

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

    no image

    ownCloudをインストール

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

    右上部広告