我是webapi2的新手,我实现了一个简单的webapi2项目,它从第三方webservice(使用凭据调用)解锁了一些数据
这工作得很好,但现在我正在寻找避免从我们的webapi抓取内容的方法。这不是敏感数据,但可能对竞争对手有利。
我们不能让我们的用户登录,但我正在寻找方法,使它更难有人从web服务刮取内容。由于数据可以从我们的网站上免费获得,我知道我们不能使它100%安全,但我必须做些什么来使它更难(这似乎是一个问题,人们之前反驳过,我只是似乎找不到一些明确的信息)
我研究过CORS,但它似乎更适合另一种方式,允许来自其他域的请求。
也许在后端使用一些秘密密钥,用一些日期时间和头信息散列它,并让javascript将其添加到ajax调用中,并检查webapi方法,如果令牌是有效的?
<标题>编辑因为似乎没有一个简单(和干净)的方法来阻止滥用令牌身份验证,我决定用Ip节流。不理想,但它有帮助:
我使用了这个库,它工作得很好:https://github.com/stefanprodan/WebApiThrottle
标题>几点思考:
共享密钥。您提到了这一点,但我想让他们将密钥作为承载令牌添加到授权头中。然后,你的API可以简单地比较键的已知值,并拒绝或接受请求。
混淆Id。你可以使用Guids来防止这种情况,而不是使用容易自动化的int类型。这将要求您的数据集更新为具有Guids,因此可能不可行。
用户代理解析。查看用户代理报头,如果它来自浏览器或任何其他您不允许的用户代理,则拒绝该请求。这很容易被欺骗,但这是一个快速检查的事情。
请记住,通过模糊实现的安全性不是安全性。你提到你知道这不会是安全的,但只是想让它更困难,我认为任何这些方法都是有效的。承载令牌将是最安全的,因为您可以为每个客户端提供自己的密钥并跟踪使用情况。您可能会争辩说,如果您控制谁拥有密钥并保持密钥轮换,令牌路由实际上是安全的。我提到的另外两个选项无论如何都不安全,但它们可以完成任务。