保护我的API
Protecting my API
我已经创建了一个基于我的API的网站-这样我的FrontEnd就可以使用一个简单的REST API从后端解耦(前端是纯javascript/html)。
我想保护API不被任何人使用——这样调用就可以单独来自网站(或者可能允许其他特定的网站使用它)。
现在,如果有人使用curl
,他将能够非常容易地抓取API。
我如何保护API假设前端是JS/Html只有,所以合法的调用从我自己的页面工作,但curl
和这样的第三方不?
这个问题可能不适合SO,因为可能有多个相同有效的答案。
但是这样做的一种方法是使用SSL、用户身份验证和令牌。下面是一个概要:
- 为使用API的页面使用SSL
- 当一个页面从您的站点被新请求时,您返回它与一个令牌,允许用户登录,没有其他。该令牌与服务器上的请求IP地址相关联,并且只能用于来自该IP地址的请求,并且仅用于登录。
- 当用户登录时,您给他们一个与他们的用户帐户和IP地址相关联的新令牌。所有后续请求必须使用该令牌,并从该IP地址发出。
- 限制可以使用该令牌进行的API调用,仅允许该用户帐户必须能够使用。即默认拒绝。
- 在您认为合适的任何不活动间隔后,使令牌(在服务器上)超时。
- 将请求的速率限制为一个实际使用你的应用程序的人合理的速率。
- 广泛使用日志来确定典型活动的模式,这样您就可以识别非典型活动并阻止它。
- 这可能是显而易见的,但要确保令牌难以预测(例如,不是一个稳定增长的数字)并且难以欺骗。虽然IP地址/令牌链接保存在服务器端,但您仍然不想让潜在黑客的生活变得轻松。
其中的用户身份验证部分很重要,因为否则,虽然您可以很安全地免受远程黑客攻击(因为SSL),但使用浏览器访问您的站点以便他/她可以获得令牌的黑客可以使用curl
或类似于他/她的令牌内容。因此,如果有人在挖掘您的站点,您至少希望知道他们可能是谁(您的用户身份验证),以便您可以阻止他们。
相关文章:
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- 谷歌地图API标记没有标记我的位置
- 每次我都要导入我的集合api来进行插入和dipling
- 如何将FBjavascript API与我的后台集成
- 如何在Ionic/Codova应用程序中保护我的Google Maps Javascript V3 API密钥
- 我的 API 调用没有返回任何内容
- 在我的 Web API 中无法获取我的自定义标头
- 我的图表出了什么问题?我使用的是谷歌图表api
- 为什么我的谷歌地图API不会渲染
- PHP应该压缩我的API响应
- 谷歌地图API找到附近的餐厅周围我的地方
- 我的搜索栏与YouTube API不同步
- 如何从我的 import.io API 获取数据
- AngularJS与我的PHP API:获得值的工厂(async:false need alternative)
- MailChimp - 通过我的网站选择(如何通过API添加)
- 计算 jQuery 的 API 使用情况.如何使用我的jQuery
- 我正在制作我的作品集,我想使用 Spotify API 来显示我当前正在收听的内容,但不想使用“播放”按钮
- Facebook共享仅对我的个人资料JavaScript API可见
- AJAX 调用从我的 REST API 收到“400 错误请求”响应
- Facebook API -我的信息共享对话框不打印