Api 只能从受信任的站点访问,不能通过任何浏览器、邮递员等访问

Posted

技术标签:

【中文标题】Api 只能从受信任的站点访问,不能通过任何浏览器、邮递员等访问【英文标题】:Api only accessible from trusted sites not by any browser, postman & etc 【发布时间】:2020-05-26 09:43:47 【问题描述】:

可以让 API 只响应特定的请求吗?

例如我在 http://api.example.test 上有 API

而且我不希望任何人通过简单地使用网络浏览器并输入该 url,或使用邮递员执行任何 POST 请求或任何其他事情来访问它。

我希望api只能通过特定站点示例http://example.test访问

这将像这样工作:

http://example.test 就像管理面板,控制该 api 的所有其他内容

http://api.example.test只是一个api数据库来存储所有信息。这个网站没有前端。

api 使用 Laravel,并且 CORS 应用只允许白名单域。但这并不妨碍任何直接请求或邮递员等。

如果有任何来源,我可以在哪里阅读有关此内容或任何解释的信息。我真的很感激它

谢谢

【问题讨论】:

【参考方案1】:

传入流量被服务器配置阻止或允许,而不是来自应用程序本身的代码库(tl;dr,这与 Laravel 无关)。 例如,通过在您的 Apache2 上配置虚拟主机,或通过修改您的 EC2 实例(在 AWS 上)的安全组,您可以专门将某些 IP 列入白名单、黑名单,使其无法访问您的位置。

这是 Apache 虚拟主机的样子:

<VirtualHost *:80>
ServerName example.net
DocumentRoot /public

<Directory "/public">
    Order Deny,Allow
    Deny from all
    Allow from 10.10.10.10
    Allow from 10.10.11.0/24
</Directory>   

【讨论】:

以上是关于Api 只能从受信任的站点访问,不能通过任何浏览器、邮递员等访问的主要内容,如果未能解决你的问题,请参考以下文章

使用Keytool为JDK添加https证书信任

csrf跨站点请求伪造

portal认证

如何通过 Python 中的 REST API 访问共享点站点?

如何创建只能由前端访问的私有api?

如何检测 IE 是不是将我的站点作为受信任站点访问?