web-dev-qa-db-ja.com

ローカルホストからのget / postリクエストのみを受け入れる

私のWebアプリがロードする必要のあるデータサイズは小さくないため、かなり遅くなることがあります。そのため、リクエストに応じて特定のデータをロードし、それをキャッシュに保存するjQueryajax関数を追加することにしました。

私が知りたいのは、ローカルホスト/同じサーバー/同じIPからのGETまたはPOSTリクエストのみを制限して、外部からアプリへの呼び出しを回避するにはどうすればよいですか?

つまり、データを返す私のphp関数は、ローカルホストから要求された場合にのみデータを返す必要があります。

私のWebアプリはCodeIgniterのフレームワークで実行され、私のWebサーバーの構成はubuntuで実行されているLAMPです。

何か案は?

19
Alex

コンストラクターで使用できます

if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR']){
  $this->output->set_status_header(400, 'No Remote Access Allowed');
  exit; //just for good measure
}

ただし、このメソッドが探しているものではない場合は、.htaccessを使用して、グーグル検索を実行し、get/postをすべて拒否する特定の例を返し、127.0.0.1/localhostを許可できます。

26
gorelative

.htaccessを使用するのがおそらく最善の方法であり、ローカルアドレスと127.0.0.1からのみ許可します。この例は petergasser.com で見つけ、少しだけ変更しました。

AuthName "bla"  
AuthType Basic  
<Limit GET POST>  
order deny,allow  
deny from all 
allow from 127.0.0.1
allow from <your-ip-here>
</Limit>  
10
h00ligan

@ gorelative のおかげで、私はこのように使用します

if( 
isset($_SERVER['REMOTE_ADDR']) AND ( $_SERVER['REMOTE_ADDR'] !== $_SERVER['SERVER_ADDR'] )
){
 die(' Access Denied, Your IP: ' . $_SERVER['REMOTE_ADDR'] );
}
3
Fathur Rohim

キー(APIキーを考えてください)を使用して、サーバーにリクエストを送信します。次に、サーバーでそのキーを確認し、それが正しい場合はデータを返します。

3
slash197