dot(。)の後の文字を探すことなく、phpで正確なファイルタイプを見つける方法はありますか?その場合、exeファイルの名前をpngに変更しても、悪意のあるpngのみと見なされるためです。また、のような一部のPHP関数pathinfo()
は、信頼できないドットのみの後に値を返します。これに関する提案やアイデアをいただければ幸いです。
4 に答える
前回確認したところ、php関数で正確なファイルタイプの画像を取得できます。任意のファイルがわからない。
100%の精度でファイルのファイルタイプを検出することはできません。これまで。任意のファイルを作成すると、検出されたタイプとしてファイルを開くことができなくなります。
ファイルの署名(最初の数バイト)をチェックすることにより、バイナリファイルのファイルタイプを高精度で検出することができます。上記のように、結果は100%保証されません。ただし、検索するにはファイルタイプの署名のライブラリが必要です。
テキストファイルのファイルタイプを検出することは可能ですが、困難です。異なる言語を区別できますか?そして、コードが複数の言語でコンパイルできる場合はどうなりますか?
必要なのはファイル拡張子ではなく、mimeタイプです。ファイル拡張子は命名規則にすぎず、ご指摘のとおり、なりすましは簡単です。finfo_file
この関数を使用して、この情報を取得できます。
信頼できます。拡張子は、最後のドットの後の文字です。file.exeの名前をfile.pngに変更すると、その新しい拡張子は.pngになり、実行できなくなります(つまり、Windowsでは、実行可能ファイルはファイル拡張子を介したコントローラーではありません)。