2

次のように、「ドメイン 2」の XML ファイルに対して simplexml_load_file を実行する「ドメイン 1」のスクリプトがあります。

$url = 'domain2.com/file.xml';
$xml  = simplexml_load_file($url);

$xmlEmail = $xml->xpath("//users/user/email");
$userEmail = implode(", ", (array) $xmlEmail);

ただし、この XML ファイルにはユーザーに関する個人情報が含まれています。直接アクセスできるようにしたくありません。ドメイン 2 もユーザーによって異なるため、実際のドメインや IP でフィルタリングすることはできません。

アクセス許可を設定して、一般にはアクセスできないようにすることはできますが、simplexml 呼び出しを介して何らかの方法で読み取り可能にすることはできますか? おそらく代替方法はありますか?

4

2 に答える 2

1

「ドメイン2」でWebサーバーのHTTP基本認証を設定します。XMLファイルのURLを次のように変更します。

$url = 'http://my_username:my_password@domain2.com/file.xml';
$xml  = simplexml_load_file($url);

Apacheの場合はmod_auth_basic

于 2012-04-06T18:25:05.853 に答える
1

.htaccess次と同じフォルダにあるファイルに以下を追加しますfile.xml

<Files file.xml>
    Order Deny,Allow
    Deny from all
    Allow from domain2.com
</Files>

これにより、からのリクエストを除いて、このファイルへのアクセスを無効にするようにWebサーバーに指示されますdomain2.com

アップデート:

質問の所有者が言ったことによると、このxmlファイルはさまざまなドメインからアクセスされます。この場合、私が考えるかもしれない唯一の合理的なオプションはパスワードです。galymzhanはすでに答えを提供しましたが、私は彼の答えを拡張し、実用的な解決策を提供しようとします。

.htaccess次と同じフォルダにあるファイルに以下を追加しますfile.xml

.htaccess

<Files file.xml>
    AuthType Basic
    AuthName "Protected Access"
    AuthUserFile /full/path/to/.htpasswd
    Require valid-user
</Files>

サーバーへのシェルアクセスは必要ないことに注意してください。ftp経由でファイルをアップロード.htpasswdし、その権限を変更して、Webサーバーグループによる読み取り/書き込みが行われないようにすることができます。

パスワード保護の詳細といくつかの例は、ここにあります

于 2012-04-06T18:16:20.347 に答える