gpt4 book ai didi

rest - 防止从浏览器直接访问 api

转载 作者:行者123 更新时间:2023-12-05 01:47:54 25 4
gpt4 key购买 nike

目前,如果用户阅读我的 Web 应用程序的源代码,他们将能够确定我的 Web 应用程序使用的所有 RESTful 服务的直接 URI。

我看到的问题是这样的:我的 Web 应用程序知道如何正确使用 API,我可能没有想到每个人都知道的验证来防止错误数据通过 API 发送。

那么有没有一种方法可以防止“直接”访问 API 并将其限制为我的 Web 应用程序?

附言仅供引用:与用户相关的 API 调用受到用户特定 cookie 的保护,该 cookie 仅在登录时发出。这意味着我不太害怕用户 X 能够通过 API 直接修改用户 Y 的数据。

最佳答案

没有。

如果浏览器正在发出请求,则用户可以欺骗该请求。期间。

My web application knows how to correctly use the API

这很好,但这会引导您假设客户端功能按预期执行。 永远不要做出这样的假设。

I might not have thought of every single validation known to man to prevent bad data from being sent through the API

这句话让我相信 API 本身比它需要的更复杂。你能做的最好的事情就是简化。没有看到具体的代码就很难说得更具体,但是 API 请求应该相当简单和直接,并且应该普遍应用防止恶意代码通过的相同技术。与在任何 Web 应用程序交互中一样,这里适用相同的一般规则...

  1. 永远不要相信来自客户的任何东西
  2. 永远不要假设客户端代码按预期执行
  3. 切勿将输入作为代码执行,始终将其视为原始值
  4. 等等...

正如您在最后提到的,您已经处理了请求的身份验证和授权。鉴于此,如果用户 X 被允许进行给定的 API 调用,那么您实质上要问的是,“我如何允许用户 X 进行 API 调用而不允许用户 X 进行API调用?”服务器无法区分。请求就是请求。

当然,有些事情您可以尝试,例如始终在代码发出的请求中包含一些自定义 header 。但是任何人都可以检查该请求并欺骗该 header 。用户的浏览器不是您的应用程序的一部分,也不在您的控制之下。

关于rest - 防止从浏览器直接访问 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20381803/

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