我的服务允许使用POST请求将任何HTML文档转换为PDF.它主要用在我客户端服务器的后端,因此,用于通信的API密钥保持私有.
现在,我正在考虑让客户的访问者能够代表我的客户端API密钥调用我的服务,而不会暴露这个安全的API密钥.
我的主要问题是安全性.如果我的客户端添加包含API密钥的XHR POST请求,则有人可以使用该API密钥并将其用于自己的目的并滥用我的客户帐户.
我可以按域过滤,但这很容易被欺骗,所以这是不可能的.
我想知道是否有办法打电话给私人服务,并且从客户(客户端)那边被识别出来而不冒被盗身份的风险?
如果您要为经过身份验证的用户提供此子租约,那么给他们提供唯一的密钥就很简单了(某些东西会针对API密钥和初始时间戳对用户ID或会话进行哈希处理,然后在访问之前对其进行检查/记录/查找暴力行为) API)。如果您是在开放的Web上进行的,而没有任何类型的用户身份验证,那么速率限制的确会非常棘手。通常,您需要结合使用会话哈希,IP地址,操作系统和浏览器数据来创建匿名配置文件,该配置文件在前端获得临时密钥。一种相当可靠的方法是在提供临时密钥之前强制用户通过CAPTCHA,该临时密钥允许他们有限次数地使用永久密钥。ip /浏览器/会话与已知客户端密钥的现有属性匹配的任何用户都将被分流到该用户(并跳过了验证码);任何与现有个人资料不匹配的人都将获得验证码。这使您成为欺骗的吸引力较小的目标。最重要的是,您应该始终根据您期望(或负担得起)的流量类型,在合理的每日点击次数内对整个事物进行速率限制,以免出现任何意外。如果您的客户每次使用他们的API密钥时都花钱,这就是您想要的最低安全性。它将需要一个简单的数据库来存储这些“配置文件”,跟踪使用情况,检查暴力并维护当前有效的客户端密钥。客户端密钥应始终定期失效-要么与创建密钥的时间有所不同,
我经常做的另一件事是基于曲线的速率限制。例如,如果我认为每分钟5次使用是合理的,则在会话后一分钟内进行5次使用后,每次使用都会增加几分之一秒的延迟*数据之前最后一分钟的使用次数平方被送达。
最好的答案是将其全部放在登录系统后面并确保其安全。
| 归档时间: |
|
| 查看次数: |
3302 次 |
| 最近记录: |