私は、ユーザがインターネット経由でアクセスできないローカルマシンで動作しているかどうかを検出するPHPスクリプトを用意しています。現在私は127.0.0.1のサーバーアドレスを確認しています。これはベストプラクティスですか、それとも良い方法ですか?ローカルホスト上で実行されているかどうかを検出する方法
答えて
ローカルホストは常に、あなたが持っていることを私は非常に疑問をIPv4のループバックIPアドレス127.0.0.1
に変換、またはIPv6で::1
、あなたが
if(IPAddress::In(array("127.0.0.1","::1")))
{
//Show Application
}
を意味するのであれば、あなたのアプリケーション内でIPを有効にすると、安全なだろうあなたのポート80の後ろにあるエリートハッカーのチームですが、TCPパケットが変更できるように、IPアドレスに頼っているという欠陥に関する話がありました。
しかし、それはあなたの心配ではありません。
また、ホスト名localhostを確認することもできますが、サーバーアドレスが127.0.0.1である場合は解決する必要があります。これはipv4の標準的な習慣です。 ipv6では、Robert Pittが提案しているように:: 1をチェックすることができます。
127.0.0.1は常に現在のローカルマシン – RobertPitt
@ RobertPittに解決されますが、実際にはそうかもしれませんが、ローカルマシンに解決される唯一のアドレスではありません。 127/8ネットブロックには16777216ほど多く存在します。 –
私はこれまでの回答がポイント上にあるかどうかはわかりませんが、混乱しているかもしれません。私は特にあなたの質問のうち「インターネット上ではアクセスできない」と答えています。
PHPではなくWebサーバーがソケットで待機し、接続を受け付けます。 PHPは接続に関する情報を$ _SERVER(http://www.php.net/manual/en/reserved.variables.server.php)から取得できます。あなたがチェックしているのは、接続がどこから来たのかということです。$ _SERVERの他のIPアドレスでサーバが利用できるかどうかは分かりません。例えば、私は、のいずれかを介してのApache/PHPの私のローカルインスタンスにアクセスすることができます。
- http://localhost/($ _SERVER [ "SERVER_ADDR"] => :: 1)
- http://127.0.0.1/($ _SERVER [ "SERVER_ADDR"] => 127.0.0.1)
- http://192.168.75.121/($ _SERVER [ "SERVER_ADDR"] => 192.168.75.121) http://shiva.local/
- ($ _SERVER [ "SERVER_ADDR"] => FE80 :: 21C:42ff:FE00:8)
あなたの計画がappは$ _SERVER ["SERVER_ADDR"]の "正しい"値を見ると違った動作をしますが、おそらくかなり安全です。つまり、リモートクライアントからユーザーになりすます可能性はほとんどありません。
これまで述べてきたように、インターネットを介して利用可能な展開されたアプリケーションでは、ユーザーの認証やユーザー権限/アクションの承認にこれらの技術を使用しません。 1つの例外は、localhostからアクセスされたときにのみ利用可能なアプリ全体を持っている場合です - このテクニックはおそらくまともな意味を持ち、個人的なアプリのために十分安全です。
私は何も確保することを心配していません - スクリプト(WordPressプラグイン)はファイルのURLをWebベースのAPIに送信します。私は人々がローカルでネットにアクセスできないマシンからこれを試していないようにしようとしています。 –
- 1. スクリプトが仮想マシン上で実行されているかどうかを検出する方法は?
- 2. Cronジョブがステージングサーバー上で実行されているかどうかの検出
- 3. 同時実行GCが.NETで実行されているかどうかを検出する方法
- 4. USBドライブから実行されているかどうかを検出する
- 5. コードがcPythonまたはJython上で実行されているかどうかを検出できますか?
- 6. cordovaコードがインアプローブ内で実行されているかどうかを検出する方法
- 7. Boost.MPI/Boost.Interprocess - プロセスが同じマシンで実行されているかどうかを検出する方法?
- 8. アプリケーションサーバーでコードが実行されているかどうかを検出する最善の方法java
- 9. Node.jsスクリプトがシェルパイプ経由で実行されているかどうかを検出する方法は?
- 10. SQL Server 2008 R2でストアドプロシージャが実行されているかどうかを検出する方法
- 11. SQLサーバーが実行されているかどうかを検出する
- 12. tcl - x11がARMまたはx86上で実行されているかどうかを検出する
- 13. スレッドがJava fxで実行されているかどうかを検出
- 14. フレーム内でjavascriptが実行されているかどうかを検出
- 15. MediaBrowserServiceCompatが実行されているかどうかを検出します。
- 16. 私のテストがVisual Studio Team Services上で実行されているかどうかを検出します。
- 17. Coldfusion:スケジューラによって実行されているかどうかの検出
- 18. どのようにフルスクリーンアプリケーションがウィンドウで実行されているかどうかを検出できますか?
- 19. プログラムはCitrix上で実行されていることをどのように検出できますか?
- 20. デフォルトのIP上でローカルホスト上でドッカーコンテナを実行するにはどうすればよいですか?
- 21. Zebraプリンタがインストールされているかどうかを検出する方法
- 22. Androidで新しいメディアファイルのスキャンを実行しているかどうかを検出する方法(バックグラウンドで)
- 23. プロセスがモバイルデバイス上で実行されているかどうかを確認する方法
- 24. opcodeキャッシュがサーバー上で実行されているかどうかを確認する方法は?
- 25. iPad上で実行されているiPhoneアプリでiOSデバイスタイプを検出する
- 26. java.util.Timerが実行されているかどうかを判断する方法
- 27. コンソールで実行しているかどうかを検出するには
- 28. 私のアプリがVisual Studioから実行されているかどうかを検出する適切な方法はどれですか?
- 29. Android:ユーザーが6.0.1ではなく6.0.1を実行しているかどうかを検出する方法
- 30. プロセスが実行を完了したかどうかを検出する方法
これは通常の練習です、またはWindows 7のホストでIPV6 :: :: 1を使用しています。http://en.wikipedia.org/wiki/Localhost – RobertPitt
ありがとうございます - 私はIPv6を考慮していませんでした。乾杯。 –