0

私のウェブサイト用のホスティング パッケージがありますが、それでは php.ini または httpd.conf にアクセスできません。私は、現在のホスティング パッケージを維持したいさまざまなクライアントを引き受けました。

私がしたいことは、私のドメイン内の特定のパスにあるディレクトリへのアクセスを許可することです。これにより、php インクルードを保持できます。その後、さまざまなクライアント サイト間で共有できるため、すべてのサイトにアクセスする必要はありません。すべてのファイルを更新します。

私の友人は、curl と fopen はそれを行うことができますが、ラグが追加されると述べました。.htaccess ドキュメントを使用して、そのディレクトリを開いて、他の Web サーバーからのインクルード リクエストに対する読み取り専用アクセスを許可することはできますか? 明らかに、私は自分の Web スペースを可能な限り安全に保ちたいと思っています。アドバイスとヘルプをお願いします。

4

1 に答える 1

1

URL を使用して curl/fopen 経由でインクルードにアクセスするということは、それらの PHP インクルードに通常の PHP スクリプトであるかのようにアクセスしていることを意味することに注意してください。.php ファイルをその特定のプレーン テキストとして直接提供するようにサーバーを構成しない限り、インクルード スクリプトは実行され、得られるのはその出力だけです。

例えば

include.php集中型の「インクルード」サーバーで

<?php

function foo() {
    echo 'hello from foo';
}

クライアント サイトのスクリプト:

<?php
include('http://includes.example.com/inculde.php');

基本的に何も含まれません。スクリプトはinclude.php出力を生成していません。foo()リモート サイトから PHP コードが返されなかったため、クライアント サイトで機能を利用できません。

一方、次のようなものがあるとします。

<?php
echo '<' . '?php';
?>               

function foo() {
  echo 'foo';
}

次に、たまたまPHPコードであるプレーンテキストを取得し、インクルードは期待どおりに機能します。

include()ただし、リモート ファイルでは使用しないでください。これにより、悪意のあるユーザーに攻撃ベクトルの可能性が開かれます。おそらく、DNS の不具合があり、攻撃によって の IP が再マッピングされる可能性がありinclude.example.comます。これにより、クライアント サイトが制御下にあるサーバーからコードをロードし、すべてのクライアントが危険にさらされることになります。

おそらくネットワークの不具合があり、何らかの理由で中央のインクルード サーバーにクライアント マシンからアクセスできません。サーバーが利用できないため、クライアントのサイトは水の中で死んでいます。

基本的に、システムに単一障害点を導入しているため、障害によってすべてのクライアントが同時に停止します。まったく良いシステムではありません。

于 2013-05-09T14:41:19.177 に答える