11.14 API
API(Application Programming Interface,应用程序编程接口)是一些预先定义好的类和函数,为其他程序提供一个简单的资源调用接口,调用 API 接口通常需要给它一个参数,API 根据这个参数计算结果返回给调用方,返回形式有 JSON、序列化、Base64 编码等方式,这种 API 随处可见,如图 11-25 所示为新浪网的一个 API 接口。
图 11-25
从图中可以看到这个接口传入了很多参数,这种接口如果是在安卓、iOS 等 APP 中使用时,传统的漏洞扫描器很难进行高覆盖率漏洞扫描,因为爬虫无法抓取到这种 API 接口,所以接口的 SQL 注入等漏洞就相对较多,如图 11-26 所示是乌云网搜索“接口”关键字的结果,数量达到上千条。
从乌云网的 API 漏洞可以看到目前 API 最多的问题是未授权访问以及数据遍历漏洞,如果一个接口随随便便就可以被调用,在业务有一定价值的情况下,相信肯定会有不少人利用这个接口进行一些不当操作,而频繁操作会给服务器造成非常大的资源消耗,因此设计一个安全的 API 应该从以下几点着重考虑:
1)访问权限控制。必要的情况下加入账户体系,严格控制数据调用权限,比如当前用户必须在登录情况下,接口参数中传入自己登录成功的凭证才能调用这个用户的数据。另外不需要账户体系的情况下也要注意加入不可暴力破解的访问密钥进行权限验证。
2)防止敏感信息泄露。之前对知乎的 App 进行了抓包分析,其中用户资料的 API 就存在注册邮箱信息泄露,该接口会返回当前查看的用户资料,其中包括注册邮箱,这样只要知道某个人的知乎账号即可知道他的个人邮箱,类似于这种没必要输出的信息应该要注意禁止输出。
图 11-26
3)SQL 注入等常规漏洞。由于传统扫描器很难抓取到完整的接口和参数,当检测变得少了,漏洞自然就多了,所以我们在开发接口的时候要特别注意代码安全,注意防止 SQL 注入、代码执行等漏洞的产生。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论