gpt4 book ai didi

javascript - Express.js - 请求者域/IP 可靠性

转载 作者:行者123 更新时间:2023-12-01 00:55:13 27 4
gpt4 key购买 nike

我最近看到this SO 发布有关获取请求域的文章。我想知道此信息是否可靠(即攻击者可以“伪造”此信息吗?)。具体来说,域和请求类型(GET、POST 等)。我问的原因是因为我不确定是否可以使用它来保护我的应用程序的后端。我认为我应该只允许来 self 自己的域的 POST 请求。

最佳答案

客户端(如浏览器)发送的请求并非来自特定域。它们来自客户端的 IP 地址。该客户端可能正在运行来自特定站点的网页,但是请求中包含的任何信息都不能被信任,并且可以被欺骗为客户端想要的任何信息。再想一想这个问题。客户端请求不是来自域。它们来自客户端,在发出 API 请求之前,该客户端可能已收到也可能未收到来自特定域的网页。

所以,不,您不能使用客户端提供的页面域信息来实现任何合理的安全性。如果请求确实包含有关请求代码来自哪个网页的信息,则该信息很容易被恶意客户端欺骗。

从浏览器使用的 API 可能需要与登录用户结合使用(通过登录 cookie 或登录后获得的某种安全 token ),但除此之外无法“保护”。为了使浏览器能够访问您的 API,任何其他客户端(包括恶意客户端)也可以访问该 API。

Google 等公司对浏览器内使用的 API 采取的保护类型包括:

  • API token ,允许他们跟踪特定 token 的使用情况和/或撤销滥用服务的 token
  • 评级限制,以防止特定 API 用户或 IP 地址滥用 API 服务
  • 对允许的使用进行许可,然后在服务器端跟踪看似允许或不允许的使用
  • 监控登录用户的使用情况,以撤销滥用服务 API 的登录
  • 在网页中动态生成并定期更改的短期 API token 。

因此,您可以在允许访问您的服务之前要求 API 帐户或用户登录。除此之外,人们通常会保护 API 免遭滥用,同时意识到确定的自定义客户端仍然可以访问 API。

I figured that I should only allow POST requests from my own domain.

您应该只允许来自有效的登录用户的 POST 请求(每个 API 请求都需要登录凭据),并且您应该只允许它们影响该特定用户有权修改的数据。您无法控制请求的来源或执行请求的客户端类型。

关于javascript - Express.js - 请求者域/IP 可靠性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56641355/

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