質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

759閲覧

ブラウザって画像拡張子が違っても表示されますが・・

landy77

総合スコア1614

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/08/18 04:24

編集2022/08/20 00:35

10年以上前に作ったWEBプログラムの改修の話が出たのでソースを見ていました。
画像のアップロードで必ず画像ファイルで有ることが前提です。

で、アップロードした画像ファイルが何であれファイル名をアップロードした際のファイル名は使用せず、全て「img01.jpg」のような形で保存していました。
要するに拡張子・MIME等を無視してアップロードされた物が正しく画像であること前提で全て拡張子をjpgとして扱っていた感じです。

多分昔の自分が拡張子が何でも画像の拡張子になっていればブラウザは表示してくれるのでそのような事にしたと思いますが(自分のことですが記憶にない・・)これはどうなんでしょうか?

そもそも画像ファイルでないものは表示されようが無いので問題外ですが、画像であることは間違いない場合、拡張子が違ったところでおそらく今のブラウザなら正しく表示してしまうと思います。

もちろんしっかりやるとすればアップロードしたファイルのMIMEを調べて・・とやることがベストなのはわかりますが、表示自体は問題なくされている場合には気にせずとも良いものでしょうか?

マナー以前の問題ではありますがそうなるとそもそもMIMEと拡張子が一致してなくても画像が表示されるのであれば、拡張子はWindowsで簡易でファイルをチェックする以外に何の意味があるのか?って言う部分も気になったのでいろいろ指摘受けるのを前提で質問してみようと思いました。

よろしくお願いいたします。

追記
情報足らずで申し訳なかったのですが同時でもPHP5.3だったようで、アップロード時にfinfoで調べてありました。
みなさんがご指摘くださった通り、そもそも画像ですらないファイルをアップロードされたら話が変わるので、画像だと確定している前提です。

こちらの管理の仕方ではありますが画像ですとそもそもが形式がいろいろあります。
そこで当時の自分はきっちりファイルの拡張子毎に変更していると処理が増えて面倒なので、アップロードした際のファイル名(拡張子というか)は無視して画像だから全部「.jpg」にしよう・・という事を思ってたみたいだったので、全て同じ拡張子で扱っても表示されないとかは無いのですが、それってどうでしょうか?というのが本来の質問でした。
もちろん何の拡張子だろうがファイルの実体情報?(MIME含めて)がファイルの先頭側にあるのも理解しています。
昔のプログラムを見てて拡張子を決め打ちしてるな・・・これってなんでこうしたのかな?って自分が何を考えてたのかを追っかけてた時に思った話です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rtyert

2022/08/18 04:28

拡張子偽装等の問題を孕んでいるのでちゃんと照合したほうがいいです
rtyert

2022/08/18 04:30

というか手抜きでしょ? 照合かけても数行程度 もうプログラマやめたほうがいいんでは?
退会済みユーザー

退会済みユーザー

2022/08/18 04:40

jpegとして扱えるかどうかくらい、ファイルの冒頭を検査するくらいはできると思うのですが。JPEGファイルのデータ構造の解説記事は、例えば:JPEG画像の中をちょっとだけのぞいてみる - Qiita https://qiita.com/kazuaki0213/items/d3e71fe203b4f1d19abc
landy77

2022/08/20 00:15

>rtyent そこまで言われる意味がわかりませんが・・ 普段はPHPなので「finfo」で調べています。 昔の自分のプログラムを見て疑問に思っただけなので。
guest

回答4

0

ベストアンサー

MIMEタイプをつけてhttp応答するのが当たり前なので、
でたらめな応答をしちゃうと駄目ですよ。

ところで、phpだとexif_imagetype()を使えば画像ファイルを判定できるっぽいのですが、すり抜けるケースも有るようです。
exif_imagetype()だけで画像かどうかを判別してはいけない - Qiita
コメント箇所まで含めて読んでみてほしい。

投稿2022/08/18 04:45

編集2022/08/18 04:47
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

多分昔の自分が拡張子が何でも画像の拡張子になっていればブラウザは表示してくれるので

ブラウザは拡張子を気にすることはありませんが、サーバから送られたMIMEタイプを頼りにファイルを処理します。昔のブラウザではファイル内容からも推定していたのですが、それをやると想定外のファイルから想定外のデータが来てセキュリティ上の問題を生じたこともあって、そのような勝手な推定は抑止すべきという流れになっています。

HTTPのヘッダを確認して、Content-Typeが正しく設定されていれば何もしなくて構いませんし、Content-Typeが存在しない、あるいはファイルのデータ種類と合わないのであれば改修するのが適切です。

投稿2022/08/18 04:44

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

もちろんしっかりやるとすればアップロードしたファイルのMIMEを調べて・・とやることがベストなのはわかりますが、

不特定多数の人がアップロードするのであれば、アップロード時に指定されたMIMEがそもそも信用できるのかという問題もあるので、偽装により何らかのセキュリティーホールを攻撃する手段があるのであれば、「アップロードしたファイルのMIMEを調べて」はそれに対する防御としては無意味です。

「アップロードしたファイルのMIMEを調べて」がアップロード時のContent-TYpeヘッダのことを言っているのではなくて、ファイルの中身を分析して種類を推定するという意味なのであれば、上記は関係ないです。

拡張子が違ったところでおそらく今のブラウザなら正しく表示してしまうと思います。

メジャーなブラウザでOKであれば良しとするのかどうか。
・ダウンロードしてクライアントローカルで各種画像ビューアーや各種画像エディターで処理する場合は大丈夫か?
・ハンディキャップなどの理由で特殊なブラウザ(よく知らないけど)を使っている人をどう考えるか

投稿2022/08/19 08:19

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

最近のブラウザは画像を表示する際に中身をチェックし、適切なContent-Typeを設定します(chromiumで確認)
なのであまり気にする必要はないと思います。

投稿2022/08/18 15:15

編集2022/08/18 15:26
a.com

総合スコア871

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問