2

我是 webapi2 的新手,我实现了一个简单的 WebApi2 项目,该项目从第三方 Web 服务(使用凭据调用)中解锁了一些数据

这很好用,但现在我正在寻找避免从我们的 webapi 中抓取内容的方法。它不是敏感数据,但它可能对竞争对手有利。

我们不能让我们的用户登录,但我正在寻找使某人更难从网络服务中抓取内容的方法。由于数据可以从我们的网站免费获得,我知道我们不能让它 100% 安全,但我必须做一些事情来让它变得更难(这似乎是人们以前反驳过的一个问题,我似乎无法找到一些明确的信息)

我研究了 CORS,但这似乎更适合反过来,允许来自其他域的请求。

也许在后端使用一些密钥,用一些日期时间和标头信息对其进行哈希处理,然后让 javascript 将其添加到 ajax 调用中,如果令牌有效,则检查 webapi 方法?

编辑

因为似乎没有一种简单(且干净)的方法来阻止令牌身份验证滥用,所以我决定使用 Ip 限制。不理想,但它有帮助:

我使用了这个库,它运行良好: https ://github.com/stefanprodan/WebApiThrottle

4

1 回答 1

1

几个想法:

共享密钥。您提到了这一点,但我会让他们将密钥作为不记名令牌添加到授权标头。然后,您的 API 可以简单地比较密钥以获得已知值并拒绝或接受请求。

混淆ID。您可以使用 Guid 来防止这种情况,而不是使用易于自动化的 int。这将需要更新您的数据集以具有 Guid,因此它可能不可行。

用户代理解析。查看用户代理标头,如果它来自浏览器或您不允许的任何其他用户代理,请拒绝该请求。这很容易被欺骗,但检查起来很快。

请记住,通过默默无闻的安全不是安全。您提到您了解这并不安全,但只是想让它变得更加困难,我认为这些方法中的任何一种都可以。Bearer 令牌将是最安全的,因为您可以为每个客户端提供自己的密钥并跟踪使用情况。您可能会争辩说,如果您控制谁拥有密钥并保持密钥轮换,令牌路由实际上是安全的。我提到的其他两个选项无论如何都不安全,但他们会完成工作。

于 2016-07-03T06:32:42.550 回答