因为我的Web应用程序需要加载的数据大小不小,所以它会变得相当慢,所以我决定添加一些jQuery ajax函数来根据请求加载某些数据,然后将其保存在缓存中。 / p>
我想知道的是,我如何才能限制来自localhost /同一服务器/同一个ip的任何GET
或POST
请求,以便我可以避免从外部到我的应用程序的任何调用?
这意味着我的php函数返回数据,只有在localhost请求时才返回数据。
我的网络应用程序在CodeIgniter的框架上运行,我的网络服务器的配置是在ubuntu上运行的LAMP。
有什么想法吗?
答案 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'] );
}