2015-10-16 164 views
0

背景如何防止API请求源欺骗?

我正在用OAUTH等编写我自己的API。

我希望用户能够获得x免费请求,之后他们必须支付一小笔费用,因为服务器不是免费的。有没有一种方法可以防止不好的人窃取令牌(例如Android应用程序的代码)并生成他们自己的请求,从而耗尽了原始用户的请求? 问题的一个重要部分是:我能否确保请求是从某个平台创建的:例如,它是否是由android手机制作的。 因为每个平台会有不同的价格。

我自己的想法

  • 头可以伪造,这只会造成安全的假象
  • 是否有最流行的类型的平台(iOS版,安卓,WP, CMSes ,桌面应用程序)一种安全的方式来存储凭据,而 发展? (我想念一些人们想使用的平台,并且不安全吗?)
  • 如果是这样,我可以编写一些库来强制开发者以安全的方式存储他的令牌,而不是硬编码吗?基于
  • 叶的移动应用无法正常工作,虽然 你可以限制每个IP

接受了请求,如果答案是否定的:

可能产生的后果

目前是什么阻止我从

  1. 正在下载正在使用goo的应用程序gle将api和 反编译。
  2. 提取令牌
  3. 产生大量的请求,只是为了与开发商乱(卷曲)

人们会得到WordPress的许可,但通过欺骗的手段也将使用他们的凭据在移动应用中。

免责声明:我没有恶意的意图,但我试着去了解如何预防谁拥有

回答

1

基本上答案是没有人。您需要将您的令牌广泛分发到您无法控制的环境中,因此您已自动丢失。没有普遍“安全”的方式来存储任何你可以强迫每个人使用的东西(如果有的话,它会不会很好?)。

为了跟踪使用情况,您需要对用户进行身份验证,您使用令牌进行身份验证,以及您希望被盗用/泄露/误用的用户。这就是为什么你首先拥有令牌而不是密码的原因:因为你可以撤销和重新生成令牌。如果令牌被滥用,谁最受伤害?此令牌所属的开发者。所以他们有很大的动力尽可能安全地存储这些令牌;留给他们找出最好的方法。你可以做的就是主动告诉开发者他们的令牌是否显示不寻常的行为,并且使他们能够轻松地撤销和重新生成令牌。

+0

我同意你说的大部分内容:但我增加了一个例子,其中不是开发者,而是我受伤最多。如果我拥有不同的api使用许可证,并且他滥用许可证1免费获得许可证2(将其用于其他平台)。对于其他智能解决方案,仍然是+1。 –

+0

坦白说,这是一种IMO根本无法飞行的商业模式。您根据发出请求的客户端类型*收取不同的费用,即使请求本身基本无法区分,以及在技术上无法确定发出请求的客户端类型。 – deceze

+0

那么这就是问题所在。业务模式基于Windows具有专业版和家庭版的相同概念:您使用更多方式来使用我的API,您付出更多。你不知道我的服务,所以我明白这个想法真的很抽象。但是,原因在于为移动平台的CMS和库创建兼容模块需要花费资金来开发,并且这样我可以按需求管理开发成本。 (也许我很傻) –