【问题标题】:How to stop anonomous users from calling REST WEB API on a public site? [duplicate]如何阻止匿名用户在公共站点上调用 REST WEB API? [复制]
【发布时间】:2020-05-13 07:21:06
【问题描述】:

我们有一个公开的 Angular 站点和一个公开的 REST WEB API。该网站适用于所有用户。如何阻止用户找出 REST POST 调用并通过 Fiddler 之类的方法提交它们?

我的想法是 CORS 会限制哪些 IP 地址可以调用这些方法,对吗?这就是答案吗?或者用户可以欺骗 IP 并仍然调用 WEB API 吗?

编辑 1:有人能告诉我为什么 CORS 不是答案吗?据我了解,它会将请求限制为仅适用于 Angular 应用程序所在的服务器?那么哪个不允许用户实际浏览器发出请求?正确的?

【问题讨论】:

  • "我的想法是 CORS 会限制哪些 IP 地址可以调用这些方法,对吗?" — 不,CORS 与客户端的 IP 地址无关。
  • 那么防伪令牌与这个问题有什么关系呢? domstamand.com/…
  • CSRF 防御与这个问题无关。甚至远程也不行。
  • 哦..我认为防伪是关于验证请求来自哪里......我的问题是关于验证请求来自哪里......但你说它们是完全不同的问题/解决方案...?好的
  • 防伪防御验证客户端没有被第三方欺骗提交请求(例如 dodgy-hacker.com 上的一个页面,其中包含一个带有action="http://yourbank.com/account/transfer" 的表单,其中预填了传输请求只要有人登陆页面,JS就会向黑客提交1000美元)。它与控制客户端实际是什么无关。

标签: angular authentication asp.net-web-api


【解决方案1】:

如果您的 API 是公开的,则无法隐藏它。基本调试工具允许查看网络浏览器正在执行的所有操作,因此对 API 的请求是公开的。

如果您不想向 API 添加身份验证,我能想到的唯一方法是使用 IP 过滤器限制访问。

人们可以伪造他们的 IP 地址并仍然向 API 发送请求,但他们无法得到答案,因为返回的流量会流向被伪造的地址。

【讨论】:

  • IP 过滤器将阻止访问者使用 Angular 编写的客户端进行访问。
  • 有什么方法可以将代码从 Angular 发送到公共用户看不到的服务器?那可能吗 ?或者用户可以解密任何角度吗?
  • Angular 应用程序在用户的浏览器中运行。用户的浏览器属于用户。他们可以轻松检查它发送到服务器的所有内容。
  • 因为用户可以看到网络浏览器中的所有流量,他们也会看到您的“秘密”请求。未经身份验证,您无法在浏览器端解决此问题。监控日志文件以查找未经授权的用户并在服务器端使用防火墙阻止他们。
猜你喜欢
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2013-01-14
  • 2018-12-09
相关资源
最近更新 更多