以下のファイルの種類のいずれかがウイルスを実行したり、何らかの方法でサーバーに損害を与えたりする可能性はありますか?
pdf、.png、.jpg、.doc、.docx、.xls、.xlsx、.ppt、.pptx、.gif。
これまでの回答のように、質問自体に理由はありません(申し訳ありませんが)。これらすべてを批判として受け止めないでください。私は自分自身を説明します。
TheWorstVirusInTheWorld.exeをサーバーにアップロードすることもできますが、実際に実行されるまで害はありません。オペレーティング システムおよび/またはそのシェルまたは他のプログラム (またはスクリプト) に重大なバグがない限り、「システム管理者が知らないうちに」という意味で、コードは自動的に実行されません。
virustotal.com を参照してください。彼らは、ウイルスかどうかを判断するために、疑わしい実行可能ファイルをアップロードするように要求しています。彼らはこれを恐れていますか?地獄いいえ。これは、ファイルがサーバーにアップロードされ、ファイルを実行しない「ウイルス対策」と呼ばれるツールによって読み取られるためです。
したがって、問題は次のようなものになる可能性があります:「私のサーバーで安全に実行できるファイルの種類はどれですか?」答えは、不明なソースからのファイルはありません。ファイルの拡張子はまったく関係ありません。UNIX システムでは、「実行」ビット (=属性) が設定されている任意のファイル (.doc も含む) を実行できます。
ハッカーやレイマーは、あなたの期待どおりには行動しません。彼らはあなたのサーバーに一般的なウイルスをアップロードしているのではなく、もしアップロードしたとしても、それらを実行する必要があります。もし彼らがあなたのサーバーで何かを実行できるなら、あなたのサーバーはすでになくなっており、ファイル拡張子をサニタイズするためのあなたの努力は無駄です.
@AAA: プロセスは次のようになります。
1) ユーザーがファイル、たとえば test.exe をアップロードします。
2)サーバーが受信すると、拡張子を抽出してファイルの名前でデータベースに保存するため、ウィッチファイルにタイプ拡張子があることがわかります。
3) ユーザーがファイルを要求すると、ファイル拡張子とその名前の両方を照会し、それらを組み立てて、最終的にユーザーに送信します。
注: 重複した名前の問題が発生する可能性があります。たとえば、固定長のランダム文字列を生成し、ファイル名の先頭にファイル名を付けて貼り付けた方がよいでしょう。
これが「PHPアップロード」の下にリストされていることに注意して、彼はリモート実行について話していると思います。その場合、それらはすべて安全であるはずです。私がブロックするものの通常のリストは、このhtaccessリストにあります。
<Files ~ "\.(php|php3|php4|php5|phtml|pl|py|psp|js|jsp|cgi|util)$">
Order deny,allow
Deny From All
</Files>