2011-01-01 36 views
8

私は、ユーザがインターネット経由でアクセスできないローカルマシンで動作しているかどうかを検出するPHPスクリプトを用意しています。現在私は127.0.0.1のサーバーアドレスを確認しています。これはベストプラクティスですか、それとも良い方法ですか?ローカルホスト上で実行されているかどうかを検出する方法

+0

これは通常の練習です、またはWindows 7のホストでIPV6 :: :: 1を使用しています。http://en.wikipedia.org/wiki/Localhost – RobertPitt

+0

ありがとうございます - 私はIPv6を考慮していませんでした。乾杯。 –

答えて

13

ローカルホストは常に、あなたが持っていることを私は非常に疑問をIPv4のループバックIPアドレス127.0.0.1に変換、またはIPv6で::1、あなたが

if(IPAddress::In(array("127.0.0.1","::1"))) 
{ 
    //Show Application 
} 

を意味するのであれば、あなたのアプリケーション内でIPを有効にすると、安全なだろうあなたのポート80の後ろにあるエリートハッカーのチームですが、TCPパケットが変更できるように、IPアドレスに頼っているという欠陥に関する話がありました。

しかし、それはあなたの心配ではありません。

0

また、ホスト名localhostを確認することもできますが、サーバーアドレスが127.0.0.1である場合は解決する必要があります。これはipv4の標準的な習慣です。 ipv6では、Robert Pittが提案しているように:: 1をチェックすることができます。

+0

127.0.0.1は常に現在のローカルマシン – RobertPitt

+0

@ RobertPittに解決されますが、実際にはそうかもしれませんが、ローカルマシンに解決される唯一のアドレスではありません。 127/8ネットブロックには16777216ほど多く存在します。 –

6

私はこれまでの回答がポイント上にあるかどうかはわかりませんが、混乱しているかもしれません。私は特にあなたの質問のうち「インターネット上ではアクセスできない」と答えています。

PHPではなくWebサーバーがソケットで待機し、接続を受け付けます。 PHPは接続に関する情報を$ _SERVER(http://www.php.net/manual/en/reserved.variables.server.php)から取得できます。あなたがチェックしているのは、接続がどこから来たのかということです。$ _SERVERの他のIPアドレスでサーバが利用できるかどうかは分かりません。例えば、私は、のいずれかを介してのApache/PHPの私のローカルインスタンスにアクセスすることができます。

あなたの計画がappは$ _SERVER ["SERVER_ADDR"]の "正しい"値を見ると違った動作をしますが、おそらくかなり安全です。つまり、リモートクライアントからユーザーになりすます可能性はほとんどありません。

これまで述べてきたように、インターネットを介して利用可能な展開されたアプリケーションでは、ユーザーの認証やユーザー権限/アクションの承認にこれらの技術を使用しません。 1つの例外は、localhostからアクセスされたときにのみ利用可能なアプリ全体を持っている場合です - このテクニックはおそらくまともな意味を持ち、個人的なアプリのために十分安全です。

+0

私は何も確保することを心配していません - スクリプト(WordPressプラグイン)はファイルのURLをWebベースのAPIに送信します。私は人々がローカルでネットにアクセスできないマシンからこれを試していないようにしようとしています。 –

関連する問題