网易首页 > 网易号 > 正文 申请入驻

12 个设计 API 的安全建议,不要等出事儿了“捶胸顿足”

0
分享至

原文地址:API Security Best Practices
原文作者:Mark Michon
译者 & 校正:HelloGitHub-小鱼干 & HelloGitHub-鸭鸭

  虽然本质上 API 就是拿来用的,但即便某个 API 的使用者全是内部人员,它还是可能会出现安全问题。为了解决 API 安全问题,在本文我们收集了一系列 API 的最佳实践,希望你记住这些 Tips 日后在保护 API/Web 服务安全和免受入侵时,会帮助到你。

  现在的 Web 已经不是之前那个年代,标准的 HTTP 满足不了 Web 安全需求。而各大浏览器供应商开始标记不使用安全层的 URL,你的 API 也可以考虑开始动手做这件事——用 HTTPS。HTTPS 采用传输层安全性协议(TLS)对传输进行加密。这意味着 HTTPS 对客户端和服务器之间的通信进行加密。对 API 而言,HTTPS 意味着从 API 发送的内容是受第三方保护的,但更重要的是这意味着访问凭证是安全的。

  说到访问凭证,避免意外使用 API 的最直接的方法便是确保正确的身份验证。身份验证决定了你是否可访问 API 及如何访问某个 API,即便是对外开放的免费 API 理论上也应当考虑采用身份验证策略以保证安全性。有了身份认证,你可以限制或删除滥用 API 的使用者,让使用者在需要时重新设置凭证,从而保护他们的安全。了解更多有关 API 身份验证的知识可以阅读《三种最常见的认证方法》

  起到和身份验证类似作用的是授权。身份验证和授权的区别在于,身份验证关注的是 API 的使用者是谁,而授权关注的是他们能够访问的内容。举个例子,免费计划用户可能被授权只能访问你所有 API 的某个子集。当你想集成诸如社交登录此类 API 时,用户授权可让应用从社交平台读取他们的配置文件数据。

  一般来说,我们会通过授权来保护 endpoint/endpoints,但更长远来说,我们需要确保单个资源的安全。单个资源的安全可以防止错误配置的 endpoint 级授权访问数据。此外,它还意味着 endpoint 本身不受用户类型的限制,而是由资源控制谁能查看它,谁不能查看它。(控制某个 URL 操作的权限)

  一说到安全,我们常会想到不适当的访问。当然,如何处理不适当的访问对管理资源也很有用。限速是一种限制 API 使用的技术。它不仅在经济上保护资源,但也保证了服务器不会因某次大量的请求而超载。大多数限速的方法都基于时间的——一般会设置一个账单周期来处理 API 总体使用情况,也会用“突发”方法来限制大量涌入的请求。如果你看到 429 HTTP 状态代码,说明你正在被限速。

  要攻击 Web 程序最古老的方式之一是输入,即:我们访问数据的方式可能已经改变,但是验证任意用户输入的需要还没有改变。客户端验证有助于防止错误和改善用户体验,但是 API 还需要在对输入执行操作前验证和净化(sanitize)输入——净化策略为删除请求中的恶意或无效代码。验证确保数据满足资源期望的必要条件,例如:类型、形式,甚至是密码结构等因素。

  采用快捷方式将数据模型直接映射到接口是很诱人,但这不仅会产生冗长的响应、增加带宽使用,而且还会暴露用户不需要访问的数据。举个例子:一个 /user 接口要返回用户信息。它可能只要用户的一些基本信息,而不需要用户的密码/权限。

  除了对 API 的输入数据进行净化(sanitize)外,还需要对从中产生的信息进行净化。错误消息对用户了解问题的发生至关重要,但要确保不泄露任何敏感数据。向终端用户提供 API 内部代码结构的详细信息会为攻击者提供便利,所以一定要确保错误信息的配置不仅能提供足够的信息来帮助用户调试,并提供足够的信息让他们报告问题,但又不足以暴露应用程序的内部工作和敏感数据。

  API 开放要建立在保护敏感数据之上,要确保不要在 JSON Web Token 和缓存中公开细节。JWT(JSON Web Token) body 给人一种很安全的错觉,其实它很容易破译。因此,应该避免 JTW 和缓存中,包含可用于访问应用程序的用户信息。同样的建议也适用于 URL,要确保查询字符串不会暴露敏感数据的细节。

  开发过程中我们并不是完全自己编写代码,大多数情况下,代码很大一部分会包含库、中间件和各种来自外部源的依赖关系。虽然一般情况下我们可以认为流行的软件包是经过实战测试的,但即便如此,并不意味着这些依赖完全避免漏洞。因此,要确保你评估过 API 的依赖关系——它们维护得好吗?你使用的是最新版本吗?有什么历史问题?也许最重要的事情是想一下:真的需要一个库来实现你正在做的功能吗?

  提高 API 安全性的另一种方法是允许用户重置他们的凭证并监视使用情况。一个常见的错误是不允许使用者重置他们的 API 密钥。如果 API 使用者意外地公开了他们的密钥,或者恶意获取密钥,那么这个问题现在会直接影响你的 API。相反,为了保证安全,你可以为他们创建一种管理访问的方法。

  我们看到像谷歌、微软和亚马逊这样的 API 巨头都对它们的 API 授权和认证过程进行了标准化。我们不妨考虑一种集中的方法,比如使用 API 网关或专用的入口点来处理身份验证请求。

  除了这些最佳实践之外,可以考虑采用开放式 Web 应用程序安全项目(Open Web Application Security Project,缩写 OWASP)的建议。他们提供了特定平台的指导,以及即将推出的特定 API 的指导——API 安全 Top 10。除了在代码层面保护 API 之外,还需要确保正确配置服务器和基础设施,以避免未经授权的访问。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
闹大了!山东突发恶劣事件...

闹大了!山东突发恶劣事件...

菏泽新鲜趣事
2024-03-27 19:52:41
山雨欲来!北、上、深率先出手

山雨欲来!北、上、深率先出手

刘晓博说楼市
2024-03-28 10:08:56
这下好了,胡萝卜也出来骗人了!这样带泥土的胡萝卜,你敢吃吗?

这下好了,胡萝卜也出来骗人了!这样带泥土的胡萝卜,你敢吃吗?

王大健美食日常
2024-03-28 14:09:11
重磅!4000人围观,招商银行刷屏!

重磅!4000人围观,招商银行刷屏!

中国基金报
2024-03-28 18:39:52
权威机构联合揭示中国人化学物暴露,江浙沪血清化学物浓度最高!

权威机构联合揭示中国人化学物暴露,江浙沪血清化学物浓度最高!

生命科学前沿
2024-03-27 17:37:07
58岁港星黎明诗去世,死因公开引热议,曾公开承认同性恋

58岁港星黎明诗去世,死因公开引热议,曾公开承认同性恋

180°视角
2024-03-28 15:36:28
震惊!网友爆料:虽迟但到,国内殡仪馆终于对理想mega下手了…

震惊!网友爆料:虽迟但到,国内殡仪馆终于对理想mega下手了…

火山诗话
2024-03-28 08:23:20
俄“锆石”高超音速导弹被乌军击落?俄罗斯未予回应

俄“锆石”高超音速导弹被乌军击落?俄罗斯未予回应

环球网资讯
2024-03-28 07:04:09
我大哥不想种地了,年近六十的他要出来打工。哪怕一个月三千也行

我大哥不想种地了,年近六十的他要出来打工。哪怕一个月三千也行

知秋侃史
2024-03-26 02:47:19
猪队友!大S律师被张兰投诉,盛怒下说露嘴,汪小菲所说竟是真的

猪队友!大S律师被张兰投诉,盛怒下说露嘴,汪小菲所说竟是真的

花花lo先森
2024-03-28 16:11:37
雷军:小米SU7全系长续航,标配起步续航700公里

雷军:小米SU7全系长续航,标配起步续航700公里

界面新闻
2024-03-28 19:56:28
菲律宾前总统阿罗约:西方解决国际冲突靠战争,而中国有东方之道

菲律宾前总统阿罗约:西方解决国际冲突靠战争,而中国有东方之道

环球网资讯
2024-03-28 16:44:13
何小鹏亲自开小米SU7赶赴发布会:这车卖便宜了就不对

何小鹏亲自开小米SU7赶赴发布会:这车卖便宜了就不对

手机中国
2024-03-28 17:09:28
女子酒店遇害 生前曾有750万借款未索回 亲属:欠债人谎称还钱将其骗去后杀害

女子酒店遇害 生前曾有750万借款未索回 亲属:欠债人谎称还钱将其骗去后杀害

红星新闻
2024-03-28 20:02:30
2003年在曼谷,张柏芝竟然穿着比基尼给陈小春推油,太让我吃惊了

2003年在曼谷,张柏芝竟然穿着比基尼给陈小春推油,太让我吃惊了

梦里大唐
2024-03-27 18:10:06
山东淄博一区图书馆岗位招聘1人3323人报考,录取率低于古代中举

山东淄博一区图书馆岗位招聘1人3323人报考,录取率低于古代中举

小萝卜丝
2024-03-28 16:28:51
xiaomiSU7汽车打脸来的猝不及防,我就说:千万不要轻易下结论

xiaomiSU7汽车打脸来的猝不及防,我就说:千万不要轻易下结论

户外小阿隋
2024-03-16 12:19:03
这是今年最恶心的“塌房”事件,没有之一!

这是今年最恶心的“塌房”事件,没有之一!

听风听你
2024-03-28 12:39:39
石油系统内部人说,新能源车续航突破2000公里,加油站很慌

石油系统内部人说,新能源车续航突破2000公里,加油站很慌

资本百科
2024-03-28 14:05:38
德国罢工结束,达成35小时工作制协议

德国罢工结束,达成35小时工作制协议

环球时报国际
2024-03-28 07:30:32
2024-03-28 23:48:49
HelloGitHub
HelloGitHub
带你玩GitHub开源社区
190文章数 5248关注度
往期回顾 全部

科技要闻

李斌李想何小鹏喊你买小米汽车

头条要闻

小米汽车7分钟大定破2万 网友:这价格真可以杀穿同行

头条要闻

小米汽车7分钟大定破2万 网友:这价格真可以杀穿同行

体育要闻

疯狂的格林,冲刺的火箭

娱乐要闻

莱昂纳多与25岁新女友互相投喂超恩爱

财经要闻

中国版QE要来?国内外机构观点罕见一致

汽车要闻

混动增程双模式 长安UNI-Z售11.79万起

态度原创

健康
家居
亲子
艺术
手机

早防早筛,远离肝硬化

家居要闻

邂逅浪漫,注入柔性的法式基因

亲子要闻

3月龄宝宝自己讨奶喝

艺术要闻

艺术开卷|从闺阁、庭院到郊野,古画中的女性生活空间

手机要闻

华为新机突然通过3C认证:疑似麒麟芯片加持,定位并不高!

无障碍浏览 进入关怀版