设想
我有一个带有 api 服务器和前端(在浏览器上运行的静态网站)的系统,它们在 2 个域名 a.example.com 和 a-api.example.com 下公开可用
问题
如何将对 a-api.example.com 上的 api 的访问限制为仅供我的前端使用(例如,没有人可以随意curl
访问它)?或者完全有可能吗?
如果您可以添加示例 nginx 块,那就太棒了。
答案1
您无法完全阻止 curl 调用。
但是,您可以通过要求将 HTTP referrer 标头设置为 api 来增加难度。您可以使用nginx HTTP referer 模块为此。示例配置:
server {
valid_referers a-api.example.com;
if ($invalid_referer) {
return 403;
}
}
这不会为您的网站增加任何安全性。恶意行为者在向 发出请求时添加所需的 HTTP 标头是小菜一碟a-api.example.com
。
因此,在 API 实施中采用最佳安全实践非常重要。