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

5个REST API安全准则

当开发REST API时,从一开始就必须注意安全方面。 REST是通过URL路径元素表达系统中特定实体的手段。REST不是一个架构,而是一种在Web上构建服务的架构风格。...(4)防止跨站点请求伪造 对于RESTful Web服务公开的资源,重要的是确保任何PUT,POST和DELETE请求都受到防止跨站点请求伪造的保护。 通常,使用基于令牌的方法。...(2)JSON编码 JSON编码器的一个关键问题是阻止在浏览器中执行任意JavaScript远程代码...或者,如果您在服务器上使用node.js。...使用正确的JSON序列化程序来正确编码用户提供的数据,以防止在浏览器上执行用户提供的输入,这一点至关重要。...200 OK -回应一个成功的REST API的行动。HTTP方法可以是GET,POST,PUT,PATCH或DELETE。 400错误请求 -请求格式错误,如消息正文格式错误。

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

    从0开始构建一个Oauth2 Server服务 用于无浏览器和输入受限设备的 OAuth

    用于无浏览器和输入受限设备的 OAuth OAuth 2.0“设备流”扩展在具有 Internet 连接但没有浏览器或没有简单的文本输入方法的设备上启用 OAuth。...此流程也出现在智能电视、媒体控制台、相框、打印机或硬件视频编码器等设备上。在此流程中,设备指示用户在智能手机或计算机等辅助设备上打开 URL 以完成授权。用户的两个设备之间不需要通信通道。...登录 Google 帐户后访问该 URL 会显示一个界面,提示您输入设备上显示的代码。 输入代码并单击“下一步”后,您将看到标准的 OAuth 授权提示,它描述了应用程序请求的范围,如下所示。...由于您可以使用想要打开 URL 的任何设备,因此您可以使用您可能已经登录到授权服务器的主要计算机或电话。这也适用于无需在设备上输入数据的情况!无需在笨重的小键盘上输入密码或代码。...user_code 令牌请求 当设备等待用户在他们自己的计算机或手机上完成授权流程时,设备同时开始轮询令牌端点以请求访问令牌。

    45550

    Go 语言安全编程系列(一):CSRF 攻击防护

    我们来看看 csrf.Protect 是如何工作的: 当我们在路由器上应用这个中间件后,当请求到来时,会通过 csrf.Token 函数生成一个令牌(Token)以便发送给 HTTP 响应(可以是 HTML...HTML 表单 首先是 HTML 表单,csrf.Protect 中间件使用起来非常简单,你只需要在启动 Web 服务器时将其应用到路由器上即可,然后在渲染表单视图时传递带有令牌信息的 csrf.TemplateField...> Submit 启动 Web 服务器,在浏览器中访问...// 这样一来,咱们的 JSON 客户端或者 JavaScript 框架就可以读取响应头获取 CSRF 令牌值 // 然后在后续发送 POST 请求时就可以通过 X-CSRF-Token.../api/user/1 接口,就可以获取如下响应信息: 这样一来,我们就可以在客户端读取响应头中的 CSRF 令牌信息了,以 Axios 库为例,客户端可以这样发送包含 CSRF 令牌的 POST 请求

    4.9K41

    React Native Fetch网络请求

    前言 我们使用的APP都需要从服务器上获取数据,那么就必须要请求网络数据,在React-Native中可以用ajax去请求网络数据,但更多情况下是采用fetch API。...一、fetch发送get请求 fetch发送get请求 fetch(https://raw.githubusercontent.com/facebook/react-native/master/docs...捕获到错误异常时调用 }) fetch发送请求,如果没有设置请求方式,默认是get请求; then用于函数回调,当上一操作完成后,就会自动执行then的回调函数,并且自动把处理完的结果...{ // 请求头 'Accept': 'application/json', // 接收的是json格式数据 'Content-Type': 'application/json',.../** * POST请求 * @param {请求路径} api_url * @param {参数列表} param * @param {成功回调} success

    2.4K20

    React Native网络请求

    很多移动应用都需要从远程地址中获取数据或资源。你可能需要给某个REST API发起POST请求以提交用户数据,又或者可能仅仅需要从某个服务器上获取一些静态内容——以下就是你会用到的东西。...新手可以对照这个简短的视频教程加深理解。 使用Fetch React Native提供了和web标准一致的Fetch API,用于满足开发者访问网络的需求。...使用其他的网络库 React Native中已经内置了XMLHttpRequest API(也就是俗称的ajax)。...但注意不能使用jQuery,因为jQuery中还使用了很多浏览器中才有而RN中没有的东西(所以也不是所有web中的ajax库都可以直接使用)。...,安全机制与网页环境有所不同:在应用中你可以访问任何网站,没有跨域的限制。

    2.4K110

    【Hybrid开发高级系列】ReactNative(四) —— 基础开发技巧

    你可能需要给某个REST API发起POST请求以提交用户数据,又或者可能仅仅需要从某个服务器上获取一些静态内容——以下就是你会用到的东西。新手可以对照这个简短的视频教程加深理解。...1.8.1 使用Fetch         React Native提供了和web标准一致的Fetch API,用于满足开发者访问网络的需求。...,安全机制与网页环境有所不同:在应用中你可以访问任何网站,没有跨域的限制。...1.11.1.1 红屏错误         应用内的报错会以全屏红色显示在应用中(调试模式下),我们称为红屏(red box)报错。你可以使用console.error()来手动触发红屏错误。...1.11.2 访问控制台日志         在运行RN应用时,可以在终端中运行如下命令来查看控制台的日志: $react-native log-ios $react-native log-android

    2.2K20

    从0开始构建一个Oauth2Server服务 发起认证请求

    你的应用程序唯一应该用它做的就是用它来发出 API 请求。某些服务将使用 JWT 等结构化令牌作为其访问令牌,如自编码访问令牌中所述,但在这种情况下,客户端无需担心解码令牌。...如果你想知道你的访问令牌是否已经过期,你可以存储你第一次获得访问令牌时返回的到期生命周期,或者只是尝试发出请求,如果当前一个已经过期了。实际上,没有太大区别。...您可以检查此特定错误消息,然后刷新令牌并再次尝试请求。 如果您使用的是基于 JSON 的 API,那么它可能会返回带有错误的 JSON 错误响应invalid_token。...要使用刷新令牌,请使用 向服务的令牌端点发出 POST 请求grant_type=refresh_token,并在需要时包括刷新令牌和客户端凭据。...最安全的选择是授权服务器在每次使用刷新令牌时发出一个新的刷新令牌。这是最新的安全最佳当前实践中的建议,它使授权服务器能够检测刷新令牌是否被盗。

    83830

    聊一聊接口的安全测试如何进行的?

    接口安全测试主要是确保API或Web服务在传输和存储数据时的安全性,防止数据泄露、篡改或未经授权的访问。准备阶段需要明确测试范围和目标,收集接口文档。...之后是日志和监控,确保有足够的日志记录。接口安全测试是确保应用程序接口(API)在恶意攻击或意外漏洞下仍能保护数据和功能的关键步骤。...输入验证测试注入攻击:SQL注入:在参数中插入' OR 1=1 --等Payload。NoSQL注入:尝试JSON参数如{"$ne": "invalid"}。...性能安全测试使用LoadRunner模拟DDoS攻击,观察接口在高压下的稳定性测试API速率限制(Rate Limiting)是否生效四、常用工具矩阵五、典型漏洞案例未授权访问漏洞:测试方法:移除Authorization...-6.9):如缺失CORS白名单修复建议:启用HSTS强制HTTPS对用户输入进行双重验证(客户端+服务端)使用JWT黑名单机制处理令牌吊销

    39910

    云开发API连接器的最佳练习

    根据表1中的数据,这一点非常明显。 API认证 每个云平台都使用不同类型的认证机制来访问API,了解这些认证机制很重要。...[d5w2yd92y4.jpeg] 请求: Headers: Content-type : application/json Method: POST API: https://api.myapplication.com...这些多重因素为API端点提供了更高的安全性。 API响应类型 API的请求和响应类型需要考虑输入和输出的消耗。API请求和响应可以是XML或JSON。...在“POLL”模式中,请求者重复调用API以检查状态更新。当您必须轮询或重试API请求时,我们建议使用指数退避算法计算API调用之间的休眠时间间隔。...指数退避背后的思想是在连续错误响应的重试之间逐渐使用更长的等待时间。 一些云服务提供商/平台为每个要使用的服务开设不同的端点。建议使用API端点维护一个服务目录,以确保使用正确的服务目录。

    5.1K80

    基于Python编写一个调用API的类

    现在后端开发基本上都是写各种API提供给别人使用,我在日常工作里既写API,也经常调用别人写的API。 分享一下经常使用的调用API的模块。 看代码之前会有一些假设,可以帮助理解代码。...请求方法 POST 请求参数 在请求体中需要提供以下json格式的数据: username: 用户名 password: 密码 示例: { "username": "",..."" } 其中: : 访问令牌,可以用来进行后续的受保护操作。...: 刷新令牌,可以用来在访问令牌过期后获取新的访问令牌。 错误处理 如果用户名或密码错误,会返回401 Unauthorized错误,并且具有描述性的错误信息。...使用示例 请求 curl --header "Content-Type: application/json" \ --request POST \ --data '{"username":"admin

    33110

    一起来写 VS Code 插件:为你的团队提供常用代码片段

    其实我们可以开发一些常用的代码片段(Snippets)供团队内部使用。当输入前缀的时候就会触发智能提示。...,在命令行中输入 yo code 选择 New Code Snippets 输入一些基础信息后项目就创建成功了。.../snippets/snippets.json" } ] 点击调试就可以在本地调试了 到此已经开发结束,如果不发布的话可以把 snippets 直接指定到本地目录下,打开 user...snippets 配置面版,将 json 拷贝进去 就可以在 vscode 中使用了,也可以在网页版 https://vscode.dev/ 使用 发布 第一步先安装 vsce npm install...第三步进入组织创建令牌 点击右上角的用户设置,点击创建新的个人访问令牌 注意 这里的 organizations 必须要选择 all accessible organizations,Scopes

    58320

    一起来写 VS Code 插件:为你的团队提供常用代码片段

    其实我们可以开发一些常用的代码片段(Snippets)供团队内部使用。当输入前缀的时候就会触发智能提示。...,在命令行中输入 yo code 选择 New Code Snippets 输入一些基础信息后项目就创建成功了。.../snippets/snippets.json" } ] 点击调试就可以在本地调试了 到此已经开发结束,如果不发布的话可以把 snippets 直接指定到本地目录下,打开 user...snippets 配置面版,将 json 拷贝进去 就可以在 vscode 中使用了,也可以在网页版 https://vscode.dev/ 使用 发布 第一步先安装 vsce npm install...第三步进入组织创建令牌 点击右上角的用户设置,点击创建新的个人访问令牌 注意 这里的 organizations 必须要选择  all accessible organizations,Scopes

    71210

    架构必备「RESTful API」设计技巧经验总结

    最初,我坚持认为封包数据是不必要的,HTTP协议已经提供了足够的“封包”来传递响应消息。 然而,根据Reddit上的回复所述,如果不封包为JSON数组,则可能会出现各种漏洞和潜在的黑客攻击。...使用访问和刷新令牌 现代的无状态、RESTful API一般会使用令牌来实现身份认证。...访问令牌用于认证所有未来的API请求,生命期短,不会被取消。 刷新令牌在初始登录的响应中返回,然后跟过期时间戳和与使用者的关系一起进行散列计算后存储到数据库中。...这个长生命期的像密码一样的密钥,可以被用来请求新的短生命期的JWT访问令牌。刷新令牌也可以用于续订并延长其使用寿命,这意味着如果用户持续使用该服务,则无需再次登录。...让JWT保持小巧 在把信息序列化到JWT访问令牌中时,请尽可能地让这个信息小巧,身份验证令牌的生命期不需要很长,因此没必要。

    2.4K30

    flask 应用程序编程接口(API)最后一节

    将集合转换成json表示,不需要反向操作,因为我不需要客户端发送用户列表到服务器。 错误处理 我在第七章中定义的错误页面仅适用于使用Web浏览器的用户。...当独立客户端(如智能手机APP)甚至是基于浏览器的单页应用程序当这些专用客户端需要访问API服务时,他们首先需要请求令牌,对应传统的Web应用程序中登录表单的部分。...如果您直接对上面列出的受令牌保护的端点发起请求,导致得到一个401错误。为了成功访问,您需要添加Authorization标题,其值是请求/ api / tokens获得的令牌的值。...此路由的身份验证是基于令牌的,事实上,在Authorization头部中发送的令牌就是需要被撤销的。使用撤销了User类中的辅助方法,该方法重新设置令牌过期日期来实现还原操作。...在API蓝图中的API可能返回的许多错误可以被重写为JSON版本,但是仍然有一些错误是由Flask处理的,处理这些错误的处理函数是被大量注册到应用中的,返回的是HTML。

    5.9K10

    设计 API 的 22 条最佳实践,实用!

    应该: POST /alarm/245743/resend 请记住,这些不是我们的CRUD操作。相反,它们被认为是在我们的系统中执行特定工作的函数。 7....JSON属性使用camelCase驼峰形式 如果你正在构建一个请求体或响应体为JSON的系统,那么属性名应该使用驼峰大小写。...POST /shops:应该创建一个新的商店,并返回创建的新商店的详细信息。在集合url上使用POST。 19....错误 当客户端向服务发出无效或不正确的请求,或向服务传递无效或不正确的数据,而服务拒绝该请求时,就会出现错误,或者更具体地说,出现服务错误。...例子包括无效的身份验证凭证、不正确的参数、未知的版本id等。 当由于一个或多个服务错误而拒绝客户端请求时,一定要返回4xx HTTP错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。

    1.5K10

    22条API设计的最佳实践

    应该: POST /alarm/245743/resend 请记住,这些不是我们的CRUD操作。相反,它们被认为是在我们的系统中执行特定工作的函数。 7....JSON属性使用camelCase驼峰形式 如果你正在构建一个请求体或响应体为JSON的系统,那么属性名应该使用驼峰大小写。...POST /shops:应该创建一个新的商店,并返回创建的新商店的详细信息。在集合url上使用POST。 19....错误 当客户端向服务发出无效或不正确的请求,或向服务传递无效或不正确的数据,而服务拒绝该请求时,就会出现错误,或者更具体地说,出现服务错误。...例子包括无效的身份验证凭证、不正确的参数、未知的版本id等。 当由于一个或多个服务错误而拒绝客户端请求时,一定要返回4xx HTTP错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。

    1.4K20

    MCP规范完整中译稿:2025-3-26版

    请求 ID 必须以前没有被请求者在同一个会话中使用过。 4.1.1.2 响应 响应是在回复请求时发送的,包含操作的结果或错误信息。...在 Streamable HTTP传输中,服务器作为独立进程运行,可以处理多个客户端连接。此传输使用 HTTP POST 和 GET 请求。服务器可以选择性地使用SSE来流化多个服务器消息。...POST 请求的正文MUST必须列情况之一: 单个 JSON-RPC 请求、通知或响应 批处理一个或多个请求和 / 或通知的数组 批处理一个或多个响应的数组 如果输入仅由 (任意数量的) JSON-RPC...进度令牌必须是字符串或整数值 发送方可以使用任何方法选择进度令牌,但是在所有进行的请求中必须是唯一的。        ...服务器必须: 验证所有的工具输入 实施适当的访问控制 工具调用的速率限制 清理工具输出 2 客户端应该: 提示用户确认敏感操作 在调用服务器之前向用户显示工具输入,以避免恶意或意外的数据溢出 在传递给

    3.3K11

    一起来写 VS Code 插件:为你的团队提供常用代码片段

    前言 VS Code 是前端开发者最佳的开发工具,你在开发中是否疲倦了从一个文件拷贝来新建一个文件呢?...其实我们可以开发一些常用的代码片段(Snippets)供团队内部使用。当输入前缀的时候就会触发智能提示。...,在命令行中输入 yo code [image.png] 选择 New Code Snippets [image.png] 输入一些基础信息后项目就创建成功了。.../snippets/snippets.json" } ] 点击调试就可以在本地调试了 [image.png] 到此已经开发结束,如果不发布的话可以把 snippets 直接指定到本地目录下...[image.png] 第三步进入组织创建令牌 [image.png] 点击右上角的用户设置,点击创建新的个人访问令牌 [image.png] 注意 这里的 organizations 必须要选择 all

    1.3K30

    用 NodeJSJWTVue 实现基于角色的授权

    在本教程中,我们将完成一个关于如何在 Node.js 中 使用 JavaScript ,并结合 JWT 认证,实现基于角色(role based)授权/访问的简单例子。...作为例子的 API 只有三个路由,以演示认证和基于角色的授权: /users/authenticate - 接受 body 中包含用户名密码的 HTTP POST 请求的公开路由。...若用户名和密码正确,则返回一个 JWT 认证令牌 /users - 只限于 "Admin" 用户访问的安全路由,接受 HTTP GET 请求;如果 HTTP 头部授权字段包含合法的 JWT 令牌,且用户在...认证成功时,一个 user 对象会被附加到 req 对象上,前者包含了 JWT 令牌中的数据,在本例中也就是会包含用户 id (req.user.sub) 和用户角色 (req.user.role)。...(500).json({ message: err.message }); } 全局错误处理逻辑用来 catch 所有错误,也能避免在应用中遍布各种冗杂的处理逻辑。

    3.8K10
    领券