3

私がやっていることは実際に安全であることを確認したいだけです。

まず、GoDaddy の共有ホスティング アカウントを持っていますが、専用の IP アドレスも持っています。

私のサーバーパスを呼び出しましょう/path
私のサイトのファイルは にあり/path/mysite
ます。ユーザーがファイルをアップロードすると、ファイルは に移動し/path/uploads/file_nameます。
誰かが URL 経由でそのフォルダにアクセスすることは不可能です。追加するには、次
の .htaccess ファイルがあります。/path/uploads

order deny,allow
deny from all
allow from 1.1.1.1 #let's say 1.1.1.1 is my server's IP address.

そして、実際にファイルのダウンロードを開始するために、ユーザーはリンクをたどりますmysite.com/file.php?q=[file_id]

ではfile.php、次のようにダウンロードします。

$mime = mime_content_type($location);
header('Content-disposition: attachment; filename='.$name);
header('Content-type: '.$mime);
readfile($location);

私の知る限り、誰かがアップロードしたファイルを私のサーバーで実行することはできませんが、間違っている可能性があります。

対処する必要があるセキュリティ ギャップはありますか?

4

2 に答える 2

1

allow from 1.1.1.1まず、 Apache サービス経由でこのディレクトリにアクセスできるようになるため、 は必要ありません。いいえ、実行中のプログラム/スクリプトからのみこのディレクトリにアクセスします。

次に、これはこの種の問題に対処するための非常に標準的なテンプレートです。そのため、一見の価値があり、広く使用されている MediaWiki や phpBB などの BB エンジンなどのパッケージは、これに取り組み、セキュリティ チェックの一部を反映しています。

私の 3 番目の提案は、Marc B の指摘を取り上げたものです。許可またはサポートするファイル名とファイル タイプの制約、および他の攻撃の可能性について考える必要があります。1 つの方法は、単純にファイル名と昇順の ID を使用してファイルを保存し、ID/ユーザー ファイル名をマップとして DB テーブルに保持することです。また、サーバーへの攻撃だけでなく、悪意のあるユーザーがこのアップロード機能を使用してXSSやその他の攻撃を実装する可能性があることも考慮する必要があります。

于 2012-06-15T13:00:01.247 に答える
-1

そのディレクトリのPHPインタープリターを完全に無効にすることができます

php_flag エンジンオフ

あなたの.htaccessに。これにより、そのディレクトリで実行されているものに対して十分な保護が得られるはずです。

ただし、アップロード コードを表示していないため、そこで何をしているのかわかりません。ここでの保護が完全に無効になるため、パス トラバーサルに対して脆弱ではないことを確認する必要があります。

ダウンロード コードも脆弱である可能性があります。投稿したスニペットを実際に使用している場合、攻撃者は単に「../../whatever.php」をファイル名 (パストラバーサル)。または、そのスクリプトをプラクシーなどとして使用します。したがって、ファイル名の値を確実に検証する必要があります。

于 2012-06-15T06:48:52.493 に答える