gpt4 book ai didi

ajax - 有没有办法验证 ajax 请求是否是从给定域发出的?

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:06 26 4
gpt4 key购买 nike

对于我要问的问题,我持开放(并欢迎)的替代方案 - 并且对重新发明轮子不感兴趣,所以如果有更好的方法,我很想知道。

我的愿望是将身份验证 token 添加到基于浏览器的 AJAX API 调用。 API 是用 Node.js 编写的。

鉴于基于浏览器的 ajax 调用对全世界来说都是可见的,我正在尝试提出一些方案,在该方案中将此 key 暴露给恶意用户不会破坏安全性。

因此,我希望将 token 与托管网站的域结合起来,以保证请求是由授权用户发出的。

我担心的是没有办法保证这一点。我想知道传入的 AJAX header 是否可以以某种方式进行欺骗,使其看起来像是来自 abc.com 的调用,而实际上它是从angry-north-korean-hackerz.net 发出的。

最佳答案

您无法可靠地判断传入的 ajax 调用来自何处。请记住,当它来自浏览器时,它来自个人用户的计算机,而不是来自任何特定域。另外,任何非浏览器客户端也可以进行 ajax 调用并发送它想要的任何 header 。

在其他浏览器中,只要您的服务器不启用跨站点访问,作为同源保护的一部分,浏览器将不允许其他网站联系您的 ajax 服务器,但这并不是从非浏览器客户端强制执行的。

如果您只想让自己的代码进行这些 ajax 调用,那么需要做一些工作才能为您提供一些起到威慑作用的东西。我见过的一种方法是在每个网页中放置一个定期更改的 token 。您通过每次 ajax 调用发送该 token ,并且您的服务器会验证该 token 是否是该特定时间段内的合法 token 。 token 必须过期,因此流氓客户端无法仅获取一个 token 并永久使用它。这并不是万无一失的,因为有人可以尝试使用刮刀定期收获新代币,但大多数人会发现这比其值(value)更多的麻烦。

关于ajax - 有没有办法验证 ajax 请求是否是从给定域发出的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684863/

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