2

自分のサーバー以外の人がアクセスしたくないファイルがあります(phpリクエストによる)。.htaccessで次のものを使用しています。

<Files myfile.xml>
    Order Deny,Allow
    Deny from all
    Allow from localhost
</Files>

しかし、疑問に思っていたのですが、これはどれほど安全ですか?とにかく誰かがこれを回避してファイルに直接アクセスできる可能性はありますか?私のphpファイルには次のものがあります。

simplexml_load_file("myfile.xml")

データを取得し、使用しています

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')

したがって、誰もそのファイルに直接アクセスすることはできません(Ajaxのみ)。この方法を使用することについてどう思いますか?

4

4 に答える 4

7

ファイルに直接名前を付けているので、それがmyfile.xmlそのファイルを取得する唯一の方法である場合にのみ安全です。誰かがあなたのサーバーへのシェルレベルのアクセス権を持っていて、別の名前を使用してそのファイルへのハードリンクを作成できる場合、たとえばln myfile.xml heehee.txt、彼らはファイルのコンテンツviを取得できます。これは、ファイルheehee.txtを'myfile経由で取得していないためです。 .xml'。

ベストプラクティスは、ファイルをドキュメントルートの外部に完全に保持することです。これはシンボリックリンク/ハードリンク攻撃を阻止しませんが、特定のバイパス攻撃を阻止します。

于 2012-09-14T14:46:07.597 に答える
2

スクリプトでファイルを読み取っている場合、これはApacheをまったく通過しないため、ローカルホストを許可することすらできません。単にすべてを拒否し、それだけです。

(さらに、最適な場所に関する他の回答は、ドキュメントルートから外れています-アクセス許可によってファイルを他の場所に配置できない場合にのみ、すべて拒否を使用してください。たとえば、基本制限が有効になっています)

于 2012-09-14T14:46:43.087 に答える
0

とにかく誰かがこれを回避してファイルに直接アクセスできる可能性はありますか?

要するに、いいえ。

安全ですか。

そのため、すべての拒否が発明されました。

この方法を使うことについてどう思いますか?

ローカルホストで外部のphpコードをホストするまでは絶対に必要ありません。

于 2012-09-14T14:47:30.703 に答える
0

これは基本的にWebサーバーレベルのセキュリティです。ローカルファイルシステムを使用しているSQLI攻撃、またはリモートファイルインクルードのセキュリティ違反など、別の違反が発生した場合は、ほとんど問題が発生します。だから私はファイルを暗号化することを検討し、それを最も必要なユーザー/グループにacl / chmodします。また、ほとんどのサーバー/ウェブホスティング会社はそのようなデータのプライベート/ディレクトリを提供します。

于 2012-09-14T14:49:18.640 に答える