gpt4 book ai didi

javascript - 限制保存在我的数据库中的特定域的 PHP API

转载 作者:行者123 更新时间:2023-12-03 11:22:46 25 4
gpt4 key购买 nike

我创建了一个 API,它接受主机 key 或 API_KEY,然后验证并返回 JWT token 。一切正常,没有 Hostkey,我无法访问受限路线。
问题
主要问题是如果有人将此主机 key 提供给其他人会发生什么,因为它将不再受到保护或将被滥用。所以我想做的不仅是验证主机 key ,还要验证请求来自的域。这是一种付费服务,我真正想限制的是特定域。就像谷歌对 MAP Api 所做的那样,就好像我们将该映射键添加到其他域一样,它会引发错误。

最佳答案

这样做的唯一方法是检查来源和引荐来源 header 。
不幸的是,服务器到服务器这不能可靠地完成,因为引用者和源头将由编码器设置,因此很容易被欺骗。对于服务器到服务器的调用,最好将允许调用 APIS 的 IP 地址列入白名单。在这种情况下,使用类似 How to get Real IP from Visitor?获取服务器的真实 IP 并根据白名单 IP 对其进行验证。
假设这是浏览器中的 JS 调用,而不是服务器到服务器,并且您信任浏览器,那么真正做到这一点的唯一方法是验证引荐来源网址和来源 header 。这仍然可以被浏览器插件甚至像 Postman 这样的工具欺骗,所以我不推荐它以提高安全性。这是一个用于验证来源或引用者的 PHP 示例。

$origin_url = $_SERVER['HTTP_ORIGIN'] ?? $_SERVER['HTTP_REFERER'];
$allowed_origins = ['example.com', 'gagh.biz']; // replace with query for domains.
$request_host = parse_url($origin_url, PHP_URL_HOST);
$host_domain = implode('.', array_slice(explode('.', $request_host), -2));
if (! in_array($host_domain, $allowed_origins, false)) {
header('HTTP/1.0 403 Forbidden');
die('You are not allowed to access this.');
}
正如@ADyson Cross-Origin Request Headers(CORS) with PHP headers 所评论的那样,CORS header 也可以选择。

关于javascript - 限制保存在我的数据库中的特定域的 PHP API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66303784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com