gpt4 book ai didi

javascript - 如何发出不可伪造的跨域请求

转载 作者:行者123 更新时间:2023-12-02 20:20:28 24 4
gpt4 key购买 nike

我需要从站点 B 获取一些数据到站点 A 的服务器端。为了向站点 B 发出请求以检索数据,需要存在与站点 B 的域关联的 Cookie。我想我因此需要使用 JSONP 在 javascript 中执行此操作?

我的想法是使用 JavaScript 向 B 发出请求,然后捕获结果并将其粘贴到 A 域上的 cookie,以便后续请求 >A 会携带带有返回数据的 cookie(向 A 发送两次请求才能将信息发送到 A 的服务器端并不重要)。这会工作得很好,除了它完全可以破解。

数据本身并不是 secret ,但我需要防止请求伪造或 Site A 上的人员手动调用 JSONP 回调函数,或使用以下命令手动设置 A cookie被盗或以其他方式伪造的数据。另外,还有其他的黑客漏洞吗?这也需要预防!

我能想到的唯一方法是:

站点 A 生成随机 token 并将其存储在 session 中。然后,它将此 token 附加到对 Site B 的 JSONP 请求的查询字符串中。然后,站点 B 做出响应,但使用数字签名对常用数据以及 token 进行加密。然后,站点 A 将此值粘贴到 A 上的 cookie 中。在下一个对A的请求中,A的服务器端可以捕获cookie,获取值,解密它,检查 token 并是否与 session 中的值匹配,相信其余的数据。

这听起来合理吗?有更容易的方法吗?我的目标是降低 A 端的复杂性。

谢谢

最佳答案

避免被黑客攻击的方法是让站点直接相互通信,而不是使用客户端 JavaScript。编写一个小型轻量级 REST API,允许数据在后台、服务器到服务器之间传输。

链接到站点 A 时,请在 URL 中包含身份验证 token ,然后可以使用对站点 B 的幕后调用来检查该 token 。此调用可以传输任何其他所需信息。 token 可能应该是 IP 绑定(bind)的,并在使用后过期。成功后,您可以在站点 A 中设置您的 cookie 信息,以避免进一步的往返。

关于javascript - 如何发出不可伪造的跨域请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660184/

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