开发者社区> 天行无忌> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【布道API】权限错误码选择:401、403 或 404

简介: 选择对 API 请求的正确响应有助于保护应用程序,并能够提高项目开发效率。虽然表面上看起来可能并非如此,但每一条不必要的信息都使攻击者更容易了解如何获得访问权限。另一方面,每一个缺失的信息都会让 API 的使用者更难理解对 HTTP 请求的响应。
+关注继续查看

选择对 API 请求的正确响应有助于保护应用程序,并能够提高项目开发效率。虽然表面上看起来可能并非如此,但每一条不必要的信息都使攻击者更容易了解如何获得访问权限。另一方面,每一个缺失的信息都会让 API 的使用者更难理解对 HTTP 请求的响应。

本文将介绍用于 API 安全目的(登录或者鉴权)的常见的 HTTP 错误响应码。通常当请求成功时,这意味着:

  • 请求令牌唯一正确标识用户
  • 请求中的资源存在
  • 对资源的操作有效
  • 用户对该资源的该操作具有必要的权限

对于成功响应的请求返回状态码:2XX,否则对于上面的情况有三个相关的错误代码:401403404

401

401 ,表示请求需要用户认证信息,因为它缺少目标资源的有效身份验证凭据。用户未经过身份验证,API 需要有效用户,这由请求中的 Authorization 标头确定。下面是 401 正常使用的情况:

  • 没有指定令牌
  • 指定的令牌格式无效
  • 令牌已过期
  • 在极少数情况下,令牌有效,但不应用于此 API

403

403,表示服务器理解请求但拒绝授权,与 401 不同的是,客户端的身份是服务器已知的,只是用户未被授权,用户尝试执行操作,但标识用户的令牌没有足够的权限来执行此操作,常用于提示用户缺少相应的权限,如 Google 403 的响应界面如下:

image.png

404

404,表示服务器找不到请求的资源,导致 404 页面的链接通常被称为损坏或死链接,并且可能会受到链接失效的影响。如果 url 路径(也称为资源)不存在,则 404 是更合适。

错误代码的选择

看起类很容易选择,在大多数情况下,它们有一定顺序的:

  1. 验证令牌
  2. 验证用户权限
  3. 检查资源是否存在

有时 23 的顺序可以对换,具体取决于应用程序服务器。但是,如果这样做的话,很容易导致资源被暴露,因为验证资源有效性是发生在鉴权之前,意味着没有权限也可以验证资源是否存在。

如果用户无权访问资源并且该资源存在,常规是返回 403 更合理,资源不存在则返回 404 。

在常规情况下,如果无法访问资源,将根据该资源是否存在返回不同的信息。未经许可的用户可以开始扫描所有端点和潜在资源,以搜索现有端点。

相反,建议应该将 403 分解为更细微的类别。如果用户知道某个资源但没有权限,则返回 403。但是,用户不关心资源是否存在,而缺失权限的提醒对于用户来说也没什么意思,在这种情况下统一返回 404 。

那么什么情况下使用 403 呢?

对于一些内容系统或者平台,可以按照状态码的精确用意处理。

总结

API 的设计离不开状态码的部分,而鉴权是一个系统常见的功能,以确保系统的安全。有时候为了安全,鉴权相关的错误码没必要精确提供,越精确的错误某种意义上增加了安全风险。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【愚公系列】2022年02月 微信小程序-app.json配置属性之entryPagePath
【愚公系列】2022年02月 微信小程序-app.json配置属性之entryPagePath
84 0
【愚公系列】2022年02月 微信小程序-app.json配置属性
【愚公系列】2022年02月 微信小程序-app.json配置属性
25 0
Python 技术篇-20行代码实现微信机器人斗图功能实例演示!斗图啦官网API调用方法
Python 技术篇-20行代码实现微信机器人斗图功能实例演示!斗图啦官网API调用方法
88 0
AI:2020年6月16日晚20点陆奇博士演讲《陆奇直播万字实录:正视挑战,把握创业创新机会(三)
AI:2020年6月16日晚20点陆奇博士演讲《陆奇直播万字实录:正视挑战,把握创业创新机会(三)
88 0
Unity3D游戏-愤怒的小鸟游戏源码和教程(一)
Unity愤怒的小鸟游戏教程 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
2147 0
API网关统一管理企业内部API
使用API网关统一管理公司内部API接口,提供统一通信协议,API文档和SDK,将大大提升公司内部部门间协作的效率。阿里云的API网关不但为单租户提供统一的API管理平台,还具备API的流量控制、多语言统一SDK、统一签名认证机制,流量预警,API文档自动生成(即将上线)等强大的能力支持。
4748 0
《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之59---BREW toolsuite 工具
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
552 0
+关注
天行无忌
技术改变生活、研发构建未来、细节铸造品质!
255
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载