仅接受来自localhost的get / post请求

时间:2012-03-26 13:11:24

标签: php ajax codeigniter post get

因为我的Web应用程序需要加载的数据大小不小,所以它会变得相当慢,所以我决定添加一些jQuery ajax函数来根据请求加载某些数据,然后将其保存在缓存中。 / p>

我想知道的是,我如何才能限制来自localhost /同一服务器/同一个ip的任何GETPOST请求,以便我可以避免从外部到我的应用程序的任何调用?

这意味着我的php函数返回数据,只有在localhost请求时才返回数据。

我的网络应用程序在CodeIgniter的框架上运行,我的网络服务器的配置是在ubuntu上运行的LAMP。

有什么想法吗?

4 个答案:

答案 0 :(得分:26)

在构造函数中可以使用

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

但是,如果此方法不是您要查找的内容..使用.htaccess您可以执行快速谷歌搜索以返回拒绝获取/发布给所有人的特定示例,然后允许127.0.0.1/localhost

答案 1 :(得分:10)

使用.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>  

答案 2 :(得分:3)

使用密钥(考虑API密钥)将请求发送到您的服务器。然后在您的服务器上检查该密钥,如果它是正确的,则返回数据。

答案 3 :(得分:3)

我这样使用,感谢@gorelative

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