【发布时间】:2016-07-02 12:54:29
【问题描述】:
我是 webapi2 的新手,我实现了一个简单的 WebApi2 项目,该项目从第三方 web 服务(使用凭据调用)解锁一些数据
这很好用,但现在我正在寻找避免从我们的 webapi 抓取内容的方法。这不是敏感数据,但它可能对竞争对手有利。
我们不能让我们的用户登录,但我正在寻找方法让某人更难从网络服务中抓取内容。由于数据可以从我们的网站免费获得,我知道我们不能让它 100% 安全,但我必须做一些事情来让它变得更难(这似乎是人们以前反驳过的问题,我似乎无法找到一些明确的信息)
我研究过 CORS,但似乎更适合反过来,允许来自其他域的请求。
也许在后端使用一些密钥,用一些日期时间和标头信息对其进行哈希处理,然后让 javascript 将其添加到 ajax 调用中,如果令牌有效,则检查 webapi 方法?
编辑
因为似乎没有一种简单(且干净)的方法来阻止令牌身份验证滥用,所以我决定使用 Ip 限制。不理想,但有帮助:
我使用了这个库,它运行良好: https://github.com/stefanprodan/WebApiThrottle
【问题讨论】:
-
"这很好,但现在我正在寻找避免从我们的 webapi 中抓取内容的方法。这不是敏感数据,但它可能对竞争对手有利。"如果您的所有输出都是基于 HTML 的,则无法避免这种情况,一种方法是将某些数据呈现为图像格式,但您的竞争对手可以再次使用某种形式的 OCR 并绕过它。
-
好吧,将数据呈现为图像格式会有点过分,并且会损害用户体验。我想阻止的是他们能够轻松地自动发送对 webapi 的请求。例如,通过 domain.tld 上的 ajax 使用以下请求: domain.tld/api/getcategoriesbyid 我想阻止(或者如果更实际的话,可能会更困难)用户/服务器自动调用它并存储数据,或在他们自己的应用程序中使用这些方法。
-
老实说,如果 web api 向公众公开,我真的不知道您将如何实现这一目标。您的第三方提供与您的 Web api 集成不是吗?
-
同意,使用另一种解决方案,请参阅我的编辑
标签: asp.net asp.net-web-api webapi2