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


相关文章
|
12月前
|
安全 API
7.4 通过API枚举进程权限
GetTokenInformation 用于检索进程或线程的令牌(Token)信息。Token是一个数据结构,其包含有关进程或线程的安全上下文,代表当前用户或服务的安全标识符和权限信息。GetTokenInformation函数也可以用来获取这些安全信息,通常用于在运行时检查某个进程或线程的权限或安全信息。
90 1
|
10月前
|
缓存 前端开发 API
手把手教你云相册项目简易开发day5 API服务搭建和权限框架
手把手教你云相册项目简易开发day5 API服务搭建和权限框架
130 0
|
27天前
|
运维 Devops API
阿里云云效操作报错合集之调用api报错:没有权限,是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
1月前
|
Go API
Go - 统一定义 API 错误码
Go - 统一定义 API 错误码
44 9
|
21天前
|
API
【Azure 环境】在Azure活动目录中的应用注册,给应用添加API权限时发现API权限配置缺失
【Azure 环境】在Azure活动目录中的应用注册,给应用添加API权限时发现API权限配置缺失
|
2月前
|
数据可视化 安全 API
数据库开放权限风险高,API非唯一选择:DataV为您开启安全高效的数据可视化之旅
良好的用户体验:DataV注重用户体验设计,提供了丰富的交互效果和动画效果,使得数据可视化大屏更加生动、吸引人。这有助于提升用户的参与度和满意度,促进数据的广泛应用
|
2月前
|
运维 Kubernetes API
阿里云云效操作报错合集之API返回的错误信息,错误码为"Operate.NoPermission",该如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
3月前
|
机器学习/深度学习 数据采集 文字识别
印刷文字识别产品使用合集之需要对子用户加什么权限,才能通过API访问
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
3月前
|
SQL DataWorks 监控
DataWorks操作报错合集之在调用数据服务API时返回的错误码是"ODPS-0410051",并且错误信息提示"Invalid credentials - accessKeyId not found",该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
46 0
|
4月前
|
缓存 Kubernetes Devops
云效产品使用报错问题之不知道云效api需要什么权限如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。