PHP で サーバ自身の IP のみ実行可能にする
簡易的に…
とりあえずサーバ自身と同じIPアドレスである場合のみ許可する形。
もっと上手い形が他にあるとは思うんだけど、基本的に自宅使用なのでとりあえずは…。
サーバ自身のアドレスを取得
うちのグローバルIPは動的なので、サーバ自身のIPアドレスを取得出来るよう、IPアドレスを表示するPHPを置く。
任意の場所にIPアドレスを表示するPHPを作成
/php/ip-address.php
1 |
<?php echo $_SERVER['REMOTE_ADDR']; |
アクセスすると自分のIPアドレスが表示される
https://homemadegarbage.com/php/ip-address.php
制限したいPHPファイルに追加
/php/ip-address-test.php
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $url = 'https://homemadegarbage.com/php/ip-address.php'; $server_ip = file_get_contents($url); $access_ip = $_SERVER['REMOTE_ADDR']; if ( $server_ip != $access_ip ) { echo 'IPが許可されていません'; return; } 〜〜〜〜〜〜〜〜 この後に実行したい処理 |
自宅以外のアクセスだと「IPが許可されていません」と表示されるhttps://homemadegarbage.com/php/ip-address-test.php
原因は調べきれていないけど URL は ドメインからのURL じゃないとダメだった。
Nginx プロキシサーバのため、 $_SERVER[‘REMOTE_HOST’] だと backend のURLを拾ってしまう(これもおいおい直さなきゃ)ので URL 直書き。