今日、私はPHPベースアプリケーションのかなり奇妙な動作を見てきました。 システムの特定の部分には、AJAX呼び出しを使用して、 ボックスにバックエンドの内容のリストを埋め込むUIがあります。php/ajax REMOTE_ADDRが偽のネットワークアダプタのIPに設定されました
ここで、AJAXリスナーはすべての着信要求に対してセキュリティチェックを行い、有効なクライアントIPだけが応答を受け取るようにします。 有効なIPはバックエンドにも格納されます。私はクライアントのほとんどのために働く昔ながら
$_SERVER['REMOTE_ADDR']
を使用し、クライアントのIPを取得するには
。今日私は remote_addrに、私のアプリケーションの実際の通信を 実行したものではないネットワークアダプタのIPが含まれていたインストールを実行しました。
私agve Roshan's Blog entry on the topuicを周りグーグル:
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))//check ip is pass from prxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
悲しいことに問題が解消されません。
誰かがこの種の問題に遭遇したことはありますか(実際に私は完全に新しい問題を発見したとは思えません^^)、これを修正する方法が私にはありますか?
編集:私は通信が行われている
- PHPバージョン5.2.9-1
- のApache/2.2.9(Win32の)によ
通常のLANカードを介して。現在、アクチュアリクライアントには複数のデバイスが追加されています( )。 VMNetアダプタなど。
私は、クライアントの設定は「ディスターブ」くらいのWebサーバ...
TIA
はK
ここでは、アダプターとアプリケーションを実行しているサーバーについていくつかの詳細を記入できますか。例のシナリオは、クライアント側で次のようになりますので、 –
のplsは私のほか – KB22
を参照してください。 はeth0 - 10.0.0.1 eth1の - 10.1.1.1 、サーバ上の要求は、クライアントの代わりに、10.1から通過するときuは10.1.1.2を持っており、 .1.1 10.0.0.1を示していますか? –