首页
学习
活动
专区
圈层
工具
发布

5个REST API安全准则

当开发REST API时,从一开始就必须注意安全方面。 REST是通过URL路径元素表达系统中特定实体的手段。REST不是一个架构,而是一种在Web上构建服务的架构风格。...REST允许通过简单的URL(而不是复杂的请求主体或POST参数)与基于web的系统交互。...5 - HTTP状态代码 HTTP定义了状态码。 当设计REST API时,不要只使用200成功或404错误。 以下是每个REST API状态返回代码要考虑的一些指南。...401未授权 -错误或没有提供任何authencation ID /密码。 403禁止 -当身份验证成功,但身份验证的用户没有权限使用请求的资源。 404未找到 -当请求一个不存在的资源。...429太多的请求 -可能存在的DOS攻击检测或由于速率限制的请求被拒绝 (1)401和403 401“未授权”的真正含义未经身份验证的,“需要有效凭据才能作出回应。”

5.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Node.js-具有示例API的基于角色的授权教程

    使用Node.js构建的教程 其他可用版本: ASP.NET: ASP.NET Core 3.1, ASP.NET Core 2.2 在本教程中,我们将通过一个简单的示例介绍如何在JavaScript...如果用户名和密码正确,则返回JWT身份验证令牌。...如果没有身份验证令牌,令牌无效或用户不具有“Admin”角色,则返回401未经授权的响应。...第二个中间件功能根据其角色检查经过身份验证的用户是否有权访问请求的路由。如果验证或授权失败,则返回401未经授权响应。...重要说明:api使用“"secret”属性来签名和验证用于身份验证的JWT令牌,并使用您自己的随机字符串对其进行更新,以确保没有其他人可以生成JWT来获得对应用程序的未授权访问。

    7.7K10

    ASP.NET Core Web API 集成测试中使用 Bearer Token

    在 ASP.NET Core Web API 集成测试一文中, 我介绍了ASP.NET Core Web API的集成测试. ...集成测试中使用Bearer Token 我这个项目里生产时使用的是Identity Server 4, 而进行集成测试时使用Identity Server 4可能会不太方便, 所以我决定简化一下, 把这项工作就仅限制在...随后使用AddAuthentication()添加身份验证中间件, 并设置Bearer作为方案, 通过AddJwtBearer()进行一些参数配置....测试身份验证中间件 被测试系统使用了身份中间件: app.UserAnthentication(), 我们也可以测试一下这个中间件的功能, 如果Token不正确的话, 就应该返回401 UnAuthorized...这个测试代码很简单, 就是设置了一个不正确的token, 并Assert返回状态码是401. 该测试会通过: ? 文章略短, 就介绍到这.

    1.2K30

    如何解决常见的 HTTP 错误代码

    服务器错误,或从 500 到 599 的 HTTP 状态代码,当 Web 服务器知道发生了错误或无法处理请求时,它会返回。...清除浏览器的缓存和 cookie 可以解决这个问题 由于浏览器故障导致请求格式错误 手动形成 HTTP 请求时由于人为错误导致的畸形请求(例如使用curl不正确) 401 未授权 401 状态代码或Unauthorized...错误意味着尝试访问资源的用户尚未经过身份验证或未正确进行身份验证。...这意味着用户必须提供凭据才能查看受保护的资源。 返回 401 Unauthorized 错误的示例场景是,如果用户尝试访问受 HTTP 身份验证保护的资源,如本 Nginx 教程中所示。...文件权限 当运行 Web 服务器进程的用户没有足够的权限读取正在访问的文件时,通常会发生 403 错误。

    5.7K20

    基于.net8在 ASP.NET Core 中掌握 API 密钥身份验证

    如果我告诉您,保护 API 比您想象的要简单,会怎么样?如果您认为向 .NET 8 应用程序添加强大的安全性需要大量复杂的设置,那么想象一下只需几行代码即可实现 API 密钥身份验证的轻松程度。...您知道在 ASP.NET Core 中实施 API 密钥身份验证是多么容易吗?如果您有兴趣让您的 API 免受窥探,那么您绝对应该继续阅读。...API 密钥是一种简单的身份验证形式,它允许客户端通过在请求中包含密钥来访问 API。它不如 OAuth 或 JWT 全面,但对于需要基本访问控制而又不复杂的场景,它是一个很好的解决方案。...如果密钥缺失或无效,则返回状态。..." 您应该会收到一条消息“未提供 API 密钥”的响应。

    1.2K10

    HTTP 状态码解析:理解网络请求的回应

    (三)3xx 重定向类状态码当服务器需要客户端进行进一步的操作才能完成请求时,会返回 3xx 系列的状态码。...在需要用户登录才能访问某些页面或资源的网站中,如果用户未登录或登录凭证已过期,就可能会收到 401 Unauthorized 状态码。...比如,当反向代理服务器无法正确连接到后端的应用服务器,或者后端应用服务器返回了错误的响应格式时,就可能会返回 502 Bad Gateway 状态码。...401 Unauthorized 侧重于身份验证,即客户端未提供有效的身份凭证或者提供的凭证无法通过服务器的验证,此时客户端可以通过提供正确的用户名和密码等身份信息再次尝试请求。...当用户在浏览器中访问一个网页时,如果收到 200 OK 状态码,页面能够正常显示,用户可以顺利地获取所需信息;而如果收到 404 Not Found 状态码,浏览器会显示相应的错误页面,告知用户所请求的页面不存在

    86700

    http响应码简介

    http响应码简介 1 返回401 一般生产环境出现这个问题,是由于没有通过接口的登录认证。...出现这种情况,一般用户在尝试访问受保护的资源前,需要通过某种形式的身份验证(如登录),但如果未能正确提供必要的认证信息,如Token、用户名和密码等。 就会出现返回码是401的情况。...2 返回403 如果生产环境请求某个接口,返回码是403,则说明目前没有访问资源的权限。 这种场景跟返回码是401有区别。 401着重于认证问题,即用户没有提供正确的身份验证信息。...如果没有通知所有的接口调用方,都可能会出现请求接口返回码为404的情况。 还有一种可能也会导致请求接口报404的问题,接口地址之前注册到了API网关中,但API网关的配置出现了问题。...建议出现异常时,把接口请求参数打印出来,方便后面复现问题。 导致这种问题的原因有很多,我们只能根据服务器上的错误日志,和相关的业务代码逐一排查。

    68910

    Ocelot简易教程(五)之集成IdentityServer认证以及授权

    如果对ReRoute进行了身份验证,则Ocelot将在执行身份验证中间件时调用与其关联的认证方案。如果请求失败,则认证Ocelot返回http的状态代码为401即未授权状态。...,首先访问一下http://localhost:1000/values 这时候返回的结果是401未授权的状态,如下图所示: ?..."RouteClaimsRequirement": { "UserType": "registered" } 在此示例中,当调用授权中间件时,Ocelot将检查用户是否具有声明类型UserType...如果不是,则用户将不被授权,并且将响应403禁止访问的状态码。 当然这种授权的方式在大部分业务场景中都是不适用的,需要自己重写Ocelot的中间件才能实现。...访问相同的URL,但是我们要控制A,每分钟只能访问10次,B每分钟能访问20次,而C不允许访问。针对这个场景Ocelot却没有相关的实现。但是我们可以通过重写Ocelot中间件来实现它。

    1.5K30

    【ASP.NET Core 基础知识】--Web API--Swagger文档生成

    通过Swagger,用户可以生成具有交互式UI的实时API文档,便于团队协作和第三方开发者理解和使用API。它支持多种编程语言和框架,并提供了丰富的功能,如自动生成代码、请求示例和测试用例。...2.2 Swagger注解 Swagger注解是在ASP.NET Core Web API中使用Swagger时,通过特定的注解来增强和定制生成的API文档。...简洁明了的描述: 使用简洁而明了的语言,避免使用过于复杂的术语,确保文档容易理解。 实例和示例代码: 提供详细的实例和示例代码,以演示API的使用方式。这有助于开发者更好地理解如何调用API。...// 如果用户未经授权,可以返回 403 Forbidden 或重定向到登录页 await next.Invoke(); }); API密钥和身份验证: 如果你的API需要身份验证,...return; } } await next.Invoke(); }); 上述代码将在访问Swagger UI时检查用户是否已经通过身份验证,未通过身份验证将返回401

    2.2K01

    HTTP状态码列表

    [2] 当且仅当后续的请求所使用的方法是GET或者HEAD时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。...[31] 401 Unauthorized(RFC 7235) 参见:HTTP基本认证、HTTP摘要认证 类似于403 Forbidden,401语义即“未认证”,即用户没有必要的凭据。...注意:当网站(通常是网站域名)禁止IP地址时,有些网站状态码显示的401,表示该特定地址被拒绝访问网站。 402 Payment Required 该状态码是为了将来可能的需求而预留的。...与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个HEAD请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。...当资源被有意地删除并且资源应被清除时,应该使用这个。在收到410状态码后,用户应停止再次请求资源。[39]但大多数服务端不会使用此状态码,而是直接使用404状态码。

    1.3K30

    【 .NET Core 3.0 】框架之五 || JWT权限验证

    以上是JWT的官方解释,可以看出JWT并不是一种只能权限验证的工具,而是一种标准化的数据传输规范。所以,只要是在系统之间需要传输简短但却需要一定安全等级的数据时,都可以使用JWT规范来传输。...app.UseStatusCodePages();//把错误码返回前台,比如是404 app.UseRouting(); app.UseAuthentication(); app.UseAuthorization...质询与应答的工作流程如下:服务器端向客户端返回401(Unauthorized,未授权)状态码,并在WWW-Authenticate头中添加如何进行验证的信息,其中至少包含有一种质询方式。...标准:在Cookie认证中,用户未登录时,返回一个302到登录页面,这在非浏览器情况下很难处理,而Bearer验证则返回的是标准的401 challenge。.../SampleData/WeatherForecasts,将返回一个401: HTTP/1.1 401 Unauthorized Server: Kestrel Content-Length: 0 WWW-Authenticate

    2.7K30

    RESTful API的设计原则是什么?

    使用资源导向的 URL 资源表示:每个 URL 应该代表一个特定的资源,通常使用名词而不是动词。例如,使用 /users 表示用户资源,而不是 /getUsers。...204 No Content:请求成功,但没有返回内容。 400 Bad Request:请求无效,参数错误。 401 Unauthorized:未授权访问。...版本控制 当 API 有重大变化时,应通过 URL 或请求头进行版本控制。...对敏感操作(如用户认证和数据修改)实施适当的身份验证和授权机制。 10. 文档化 提供详细的 API 文档,说明每个端点的功能、请求方法、参数、返回格式和示例。...总结 通过遵循这些 RESTful API 设计原则,可以创建出符合标准、易于使用和扩展的 API。良好的设计不仅提升了开发效率,还提高了用户的体验和满意度。

    56610

    Spring Security 实战干货: 401和403状态

    今天来谈谈两个和认证授权息息相关的两个状态401和403以及它们如何在Spring Security融入体系中的。 2. 401 未授权 我在RFC 7235[1]中找到了相关的表述。...当客户端收到401状态码时,表明了该请求因为缺乏了被信任的认证凭据而被拒绝访问目标资源。 如果用户在请求中携带了认证凭据,那么401响应表明该凭据是未授信的,不能访问目标资源。...403状态代码表示服务器已理解了客户端的请求,但拒绝授权。如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限。客户端不应自动携带相同的重复证书再次请求。...如果服务器认为这些反馈信息比较敏感,可以用404来代替。 4....仅仅当登录认证失败返回了401,其它情况的这两种异常都返回了403。 ? Spring Security异常处理体系 默认情况下他们都会被转发到异常页面。

    4.6K30

    C# .NET面试系列六:ASP.NET MVC

    6)响应发送给用户: 最终的 HTML 响应通过网络返回给用户的浏览器。通过这种方式,MVC 框架将应用程序分层,使得数据、业务逻辑和用户界面分开,提高了代码的可维护性和可测试性。...在ASP.NET MVC中,控制器处理HTTP请求,模型表示应用程序的数据和业务逻辑,视图负责呈现用户界面。ASP.NET MVC通常与Web应用程序一起使用,而不是Windows应用。...使用 return new EmptyResult();语句返回 EmptyResult。9、HttpUnauthorizedResult表示一个HTTP 401未授权的结果。...Web API是一种灵活而强大的工具,可用于构建面向Web的服务,为不同平台和设备提供数据和功能。在ASP.NET中,ASP.NET Web API是一个流行的Web API框架。17....2)当动作方法返回 ViewResult 时,它会呈现相应的视图,将视图的 HTML 内容发送给客户端浏览器。

    40210

    「微服务架构」部署NGINX Plus作为API网关,第1部分

    但是,当部署为API网关时,使用JSON不是NGINX Plus的限制或要求; NGINX Plus与API本身使用的架构风格和数据格式无关。...幸运的是,当修改API客户端不切实际时,我们可以动态地重写客户端请求。...回应错误 HTTP API和基于浏览器的流量之间的主要区别之一是如何将错误传达给客户端。当NGINX Plus作为API网关部署时,我们将其配置为以最适合API客户端的方式返回错误。...第27行的指令指定当请求与任何API定义都不匹配时,NGINX Plus会返回错误而不是默认错误。...在这里,我们专注于API特定的身份验证方法。 API密钥身份验证 API密钥是客户端和API网关已知的共享密钥。它们本质上是作为长期凭证发布给API客户端的长而复杂的密码。

    2.4K21

    使用ASP.NET Core 3.x 构建 RESTful API - 3.3 状态码、错误故障、ProblemDetails

    not allowed,当尝试发送请求到资源的时候,使用了不被支持的HTTP方法时,就会返回405状态码; 406 - Not acceptable,这表示API消费者请求的表述格式并不被Web...故障确实会对API整体的可用性造成影响。 ProblemDetails 当ASP.NET Core 大约在 2.1 版本的时候,它引入了 ProblemDetails。...ProblemDetails是基于 RFC7807 这个规范,目的是让 HTTP 响应可以携带错误的详细信息,而不是只返回一个错误的状态码。...在ASP.NET Core 3.x里面,同样也使用了 ProblemDetails。 看一个返回404的例子: ?...这是一个Get请求,但是并没有找到该资源,返回的状态码是404,而响应的body就是 ProblemDetails。

    2K20

    HTTP协议状态码详解(HTTP Status Code)

    使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用...401   (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。 403   (禁止) 服务器拒绝请求。...407   (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。 408   (请求超时)  服务器等候请求时发生超时。...5xx(服务器错误) 这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。...这是通过拦截HTTP流量,当用户试图访问网络返回一个重定向和登录,这很讨厌,但是实际情况就是这样的。 使用这些“拦截”客户端,会有一些讨厌的副作用。

    2.4K80

    状态码在后端开发中常常遇到的场景

    Spring Cloud Gateway:在路由配置正确且下游服务正常时返回。 Nginx:当请求的资源存在且客户端有权限访问时返回。...4. 401 Unauthorized - 未授权 场景:请求未通过身份验证。 Spring Security:当用户未登录或令牌无效时,Spring Security返回401状态码。...Nginx:在权限控制中,如果用户没有访问权限,Nginx返回403状态码。 6. 404 Not Found - 未找到 场景:服务器无法找到请求的资源。...401 Unauthorized,未授权。 当用户未登录或令牌无效时返回。 - 403 Forbidden,禁止访问。 - 在权限控制中,如果用户没有访问权限返回。...404 Not Found,未找到。 - 服务器无法找到请求的资源时返回。 500 Internal Server Error,服务器内部错误。 当后端服务发生异常且无特定异常处理器时返回。

    1.1K10
    领券