【画像アップロード&表示機能】の質問


画像ファイルをアップロードして表示するところまでphpで実装しました。
質問は、ファイルの変換とセキュリティの2点です。
・アップロードされたbmpファイルを、自動でgifに変換
・拡張子偽装によるブラクラ・ウィルスをチェック
この「変換」と「セキュリティチェック」について
・実際のコード
・そのまま使えるモジュールのURL
をご存知の方教えてくださいませんか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/08/29 12:47:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:k12u No.3

回答回数80ベストアンサー獲得回数7

ポイント32pt

PECLのImagickがよさそうです。

http://dozo.matrix.jp/pear/index.php?PECL%2FImagick

http://pecl.php.net/package/imagick

リンク先のコードがほとんどそのまま使えると思います。

拡張子偽装であればそもそも画像として変換することは不可能なので

特にセキュリティの問題が生じることもないでしょう。

id:yshkw

まさにこれですね。

GD

pecl

ImageMagick

あたりのキーワードでそちらの世界への扉が開けました。

本当にありがとうございます

拡張子偽装の件もそれで正しそうですね

2006/08/29 12:45:29

その他の回答2件)

id:aiaina No.1

回答回数8179ベストアンサー獲得回数131

ポイント3pt

変換ソフト(以下コンバーター)は色々あります。

Vectorサイトを検索してもいいですが、

おすすめは株式会社ツァイトのフリーコンバーターです。

(正式名称はイメージファイルコンバータ,フリーソフトウェア版だそうです。)

もともとSuperKiに付属していたものをフリーで配っています。

対応形式が多いのでもっていると便利だと思います。

■対応ファイルフォーマット

読み込み:ZSK/ZIM/BMP/TIFF/PCX/MAG/PCD/JPEG/GIF

書き込み:ZSK/ZIM/BMP/TIFF/PCX/MAG/JPEG/GIF

※プログレッシブJPEGとインタレースGIFの作成が可能です。

id:yshkw

ご丁寧にありがたいのですが

実はすべてサーバ上で行いたいのです。

今は「使えるネット」のサーバをレンタルしております。

任意のユーザがbmpをアップロード

サーバが本当にbmpなのか判定

bmpであればgifに変換(でなければ、エラー)

アップロードしたgifファイルをすべての人が閲覧

という手順を自動で行いたいのです

2006/08/29 00:56:29
id:kazu1107 No.2

回答回数199ベストアンサー獲得回数14

ポイント45pt

PHPでそのようなことをやりたいのであればGDライブラリを使うのが一般的かと思います。

私もそれほど詳しいわけではないのですが、参考になりそうなページをいくつかご紹介しておきます。

http://php.s3.to/man/ref.image.html

http://www.sakura-pc.jp/php/gd.shtml

ただGDライブラリはPHPのシステムに組み込む形になるのでサーバが対応していなければ使えません。

GDライブラリが使えるかどうかは以下のサイトが参考になるかと

http://www.gadgety.net/shin/tips/unix/php-gd.html

id:yshkw

sakura-pcでは画像の他形式への書き出しやリサイズの部分が参考になりました。

画像の変更、保存、削除などの周辺情報も欲しかったので足す勝ちます。

さらにGDもインストールなしで使えそうです。

gifでの書き出しは解決です。

ありがとうございました。

あとは、セキュリティが不安なのです・・・

2006/08/29 12:41:27
id:k12u No.3

回答回数80ベストアンサー獲得回数7ここでベストアンサー

ポイント32pt

PECLのImagickがよさそうです。

http://dozo.matrix.jp/pear/index.php?PECL%2FImagick

http://pecl.php.net/package/imagick

リンク先のコードがほとんどそのまま使えると思います。

拡張子偽装であればそもそも画像として変換することは不可能なので

特にセキュリティの問題が生じることもないでしょう。

id:yshkw

まさにこれですね。

GD

pecl

ImageMagick

あたりのキーワードでそちらの世界への扉が開けました。

本当にありがとうございます

拡張子偽装の件もそれで正しそうですね

2006/08/29 12:45:29
  • id:bonlife
    id:k12uさんの「拡張子偽装であればそもそも画像として変換することは不可能なので特にセキュリティの問題が生じることもないでしょう。」という発言は間違ってはいないと思いますが、セキュリティの考え方としては適切ではないと思います。
    予想外のエラーでプログラムが異常終了してしまう可能性もあると思いますので、画像変換処理の前にファイルタイプは確認しておくべきだと思います。

    ブラウザから送られるMIMEタイプは信用できませんので、アップロードされたファイルの情報をfileinfoで取得してみてはいかがでしょうか。

    -http://jp.php.net/manual/ja/features.file-upload.php

    $_FILES['userfile']['type']
    ファイルの MIME 型。ただし、ブラウザがこの情報を提供する場合。 例えば、"image/gif" のようになります。 この MIME 型は PHP 側ではチェックされません。そのため、 この値は信用できません。

    -http://jp.php.net/manual/ja/ref.fileinfo.php
    -http://jp.php.net/manual/ja/function.finfo-file.php

    参考になれば幸いです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません