私の状況:
[〜#〜] php [〜#〜]を使用して、ユーザーがファイルのウイルスをスキャンできるようにするWebアプリケーションを作成しています。これにより、ユーザーはhtml "file"入力タイプまたはURLを介してファイルをアップロードできます。私はhtmlとPHPサイドをうまく構築し、ユーザーはサーバーにファイルを正常にアップロードできます。Windowsサーバー2012 R2をIIS私のサーバーとして。
私の質問:
私の知る限り、Webサイトのセキュリティ/攻撃の脆弱性を回避するためのセキュリティ(スクリプトとサーバー側の両方)はほとんどまたはまったくありません。攻撃者が私のサーバーをハッキングする可能性のあるファイルをアップロードして実行する可能性があることを知っています。 つまり、これらの問題を解決するためにどのような手順を実行できますか。
私が認識しているもの:
私が行った研究のおかげで、自分を強化するために次のことを実行できる可能性があると理解していますが、これらはすべて理論であり、実際にそれらを適切に配置する方法がわかりません(そのため、なぜ私が尋ねているのでしょうか)。
ファイルタイプの制限(はい、.phpファイルをブロックする可能性がありますが、例として-ユーザーが実行可能ファイルをスキャンする可能性が高いため、一般的な.exeをブロックできません)この種類のサービスは、ファイルタイプを制限しすぎると使いやすさが失われるだけです
アップロードしたファイルを別のドライブに保存する-サイトディレクトリはCドライブにあり、使用できる空のDドライブがあります。 サーバーが特定のドライブで何かを実行できないようにするにはどうすればよいですか?ハッカーがそのドライブに移動してアップロードされたファイルを実行しないようにするにはどうすればよいですか?
私が試したもの:
結論:
したがって、基本的に、上記のマイナーな質問への回答と同様です。可能性のある脅威を排除するために、アプリケーションとサーバーを強化するために実行できるアクションのリストを探しています。ありがとう
コード:
補足として、以下に私のコードを示します。あなたがそこに深刻な何かを見つけた場合に備えて。または、コードに追加できる追加のセキュリティがあります。
PHP:
$upload_directory = "uploads/";
$uploaded_file = $upload_directory . basename($_FILES["file"]["name"]);
$upload_ok = 1;
$image_file_type = pathinfo($uploaded_file, PATHINFO_EXTENSION);
// check for files bigger then 8mb
if($_FILES["file"]["size"] > 8388608){
print "your file exceeds 8mb";
$upload_ok = 0;
exit();
}
// only allow certain file types
if($image_file_type != "jpg" && $image_file_type != "png" && $image_file_type != "jpeg" && $image_file_type != "gif"){
print "invalid file type";
$upload_ok = 0;
exit();
}
// upload it
if($upload_ok != 0){
move_uploaded_file($_FILES["file"]["tmp_name"], $uploaded_file);
}
HTML:
<form method="post" action="index.php" enctype="multipart/form-data">
<label>Select Desired File</label><br>
<input type="file" name="file" id="file">
<input type="submit" name="submit" value="Scan File">
</form>
ユーザーファイルのアップロードを許可する場合は、十分に注意する必要があります。これは、頭から離れて、始めるための単なるリストです。
ユーザーがファイルを実行できないようにする
ユーザーが任意のファイルを取得できないようにする
本当に必要な場合を除き、サービスにアップロードされたすべてのファイルをユーザーが列挙できないようにする必要があります。実際、あなたのサービスの説明に基づいて、彼らが再びファイルをダウンロードできるはずである理由はありません。
ファイルがシステムに直接問題を引き起こさないようにする
サービスをウイルススキャンサービスとして説明します。あなたがしようとしていることは危険かもしれません。ウイルスがAV自体を利用して特権を昇格させることは考えられます。
AVが問題を引き起こさないことの確認
違反の場合にシステムを隔離する