localhost またはサーバーで PHP コードを実行しているかどうかを検出する方法は多数あります。ただし、ユーザーが偽造できる $_SERVER と http ヘッダーを使用しています。
私のウェブサイトで開発者のphpシェルをインタラクティブにしたので、それがローカルホストにない場合は404になるはずなので、私にとっては深刻です。
最も簡単な答えは$_SERVER["REMOTE_ADDR"]
です。一般的には安全性が高いと考えられています。
ただし、スクリプトを介してコマンド ライン コマンドへのアクセスを提供する場合、それでは不十分な場合があります。IP スプーフィングにより、外部からスクリプトにリクエストを送信できる可能性があります。IP スプーフィングは通常、攻撃者が応答を受信しないことを意味しますが、これは破壊的なコマンドをトリガーするのに十分な場合があります。(これは非常に難解なシナリオであり、それが可能であるということ以外はほとんど知りません。)
あなたができること:
PHP 内から IP をチェックする代わりに、より厳しい手段を使用して外部からページにアクセスできないようにします。ローカルのリクエスト。
PHP 内から IP をチェックする代わりに、何らかのパスワード認証を使用してページを保護します。
セキュリティの専門家 (おそらくhttp://security.stackexchange.com ) に相談し、ネットワークの設定について説明し、特定のシナリオで IP スプーフィングが可能かどうかについて意見を求めてください。
Web サーバーではなく、サーバーのローカル コマンド ラインであるCLIからスクリプトを使用できるようにします。スクリプトを Web サーバーのルートの外に配置します。(ただし、このオプションは、対話型シェルを持つという特定の目的を無効にする可能性があります)
または、もちろん、誰も見つけられないことを信頼することもできます。これが低リスクのプライベート プロジェクトの場合、IP スプーフィングについて考えるのは、おそらく考えすぎです。
を探していると思います$_SERVER['REMOTE_ADDR']
。
localhost または 127.0.0.01 または選択した LAN IP で確認してください。
Pekka 웃</a>の回答では、これがどのように偽装される可能性があるかについて詳しく説明しています。
$serverList = array('localhost', '127.0.0.1');
if(!in_array($_SERVER['HTTP_HOST'], $serverList)) {
}
これを偽造することはできません