一、背景情况 5月5日腾讯云安全曾针对攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未授权的情况下远程执行代码的安全问题进行预警,在预警的前后我们曾多次捕获相关的攻击案例...YARN提供有默认开放在8088和8090的REST API(默认前者)允许用户直接通过API进行相关的应用创建、任务提交执行等操作,如果配置不当,REST API将会开放在公网导致未授权访问的问题,那么任何黑客则就均可利用其进行远程命令执行...更多漏洞详情可以参考 http://bbs.qcloud.com/thread-50090-1-1.html 三、入侵分析 在本次分析的案例中,受害机器部署有Hadoop YARN,并且存在未授权访问的安全问题...,黑客直接利用开放在8088的REST API提交执行命令,来实现在服务器内下载执行.sh脚本,从而再进一步下载启动挖矿程序达到挖矿的目的。...download2方法则判断系统下载对应版本的挖矿程序,其中http://185.222.210.59/g.php返回的是另外一个IP地址;下载成功后则再次验证,并复制重命名为ppc。 ?
认证 XWiki REST API支持两种类型的身份验证: HTTP BASIC Auth: 提供授权的HTTP头的凭据 XWiki session: 如果你登录的XWiki并使用通过认证机制所提供的cookie...401: 如果用户没有被授权。 作业资源 作业是一个ID(jobId),它是一个字符串标识。在REST URL,必须通过/分隔字符串来表示ID。...401: 如果用户没有被授权。 自定义资源 可以很容易地在你的wiki注册一个org.xwiki.rest.XWikiResourceJava组件来添加REST资源(参见组件指南)。...客户端访问/使用REST API则可以声明对xwiki-platform-rest-api的依赖,然后就可以与它交互信息。有两个使用用例: 另一个平台模块想要对现有资源生成带有链接响应。...HTTP客户端向RESTful API发出请求。 xwiki-platform-rest-api模块也可以看作是REST API的权威参考。
当开发REST API时,从一开始就必须注意安全方面。 REST是通过URL路径元素表达系统中特定实体的手段。REST不是一个架构,而是一种在Web上构建服务的架构风格。...当设计REST API时,不要只使用200成功或404错误。 以下是每个REST API状态返回代码要考虑的一些指南。 正确的错误处理可以帮助验证传入的请求,并更好地识别潜在的安全风险。...401未授权 -错误或没有提供任何authencation ID /密码。 403禁止 -当身份验证成功,但身份验证的用户没有权限使用请求的资源。 404未找到 -当请求一个不存在的资源。...429太多的请求 -可能存在的DOS攻击检测或由于速率限制的请求被拒绝 (1)401和403 401“未授权”的真正含义未经身份验证的,“需要有效凭据才能作出回应。”...遵循这些准则将导致更安全和高质量的REST API服务和更多的开发人员友好的REST API。
我见过的大多数API 都“声称” 是 “符合REST原则”的——意味着遵循 REST 架构的原则和约束。...不要返回纯文本 尽管并非强制规定的,但大多数REST API通常约定使用JSON作为数据格式。然而,仅返回包含JSON格式字符串的响应体是不够好的。您还应该指定Content-Type标头。...你的API最糟糕的事情莫过于返回一个带有200 OK状态码的错误响应。 这是最差的语义,相反,应该返回一个能准确描述错误类型的有意义HTTP状态码。...了解401未授权和403禁止之间的区别 如果我每看到一次开发人员甚至有经验的架构师搞砸这个问题就能得到一个25美分硬币……在处理REST API中的安全错误时,很容易弄混错误是与身份验证还是授权(又称权限...401 未授权。 消费者正确地进行了身份验证,但他们没有访问资源所需的权限/适当的许可吗? 403 禁止。 12.
当权限检查失败时,将根据以下规则返回“403 Forbidden”或“401 Unauthorized”响应: 请求已成功验证,但权限被拒绝。— 将返回 HTTP 403 Forbidden 响应。...一个HTTP 401未经授权的响应,将返回一个适当的WWW-Authenticate报头。 设置权限策略 可以使用设置全局设置默认权限策略DEFAULT_PERMISSION_CLASSES。例如。...] 或者使用基于装饰器@api_view的函数视图 from rest_framework.decorators import api_view, permission_classes from rest_framework.permissions...仅允许对经过身份验证的用户进行访问。...如果你使用一个常规的APIView,你需要自己调用分页API来确保你返回一个分页的响应。
不要返回纯文本 虽然返回 JSON 数据格式的数据不是 REST 架构规范强制限定的,但大多 REST API 都遵循这条准则。...你能够仅通过字面信息来区分这个接口是返回某个 article 还是多个呢?...分清 401 和 403 当我们遇到 API 中关于安全的错误提示时,很容易混淆这两个不同类型的错误,认证和授权(比如权限相关)—— 老实讲,我自己也经常搞混。...这里是我自己总结的备忘录,它阐述了我如何在实际情况下,区分它们: 用户是否未提供身份验证凭据?认证是否还有效?这种类型的错误一般是未认证(401 Unauthorized)。...这种一般是未授权(403 Forbidden) 12.
实际上在工作中对api接口规范、命名规则、返回值、授权验证等进行一定的约束,一般的项目api只要易测试、足够安全、风格一致可读性强、没有歧义调用方便我觉得已经足够了,接口是给开发人员看的,也不是给普通用户去调用...URL API请求授权 1.REST的来源 REST:Representational State Transfer(表象层状态转变),如果没听说过REST,你一定以为是rest这个单词,刚开始我也是这样认为的...当状态值为”fail”或”error”时,data仅包含错误原因或异常名称、或者null也是可以的 返回成功的响应json格式 { "code": 200, "message": "success...HTTP Method 详细解释 返回状态码 GET 获取对象或集合 200成功、401没有授权、403访问禁止、404没有资源、参数错误、406请求格式不正确、410资源被删除、500服务器内部错误...pageIndex={pageIndex} blogApp:博客名 7.API请求授权 博客园的开放平台API也是基于OAuth2.0,参见理解OAuth2.0,留存分析
REST API 安全设计指南。...但其缺少安全特性,《REST API 安全设计指南》就是一个REST API安全设计的指南,权当抛砖引玉,推荐网站后台设计及网站架构师们阅读。...限定num位置为整数等,如果不是参数则直接返回非法参数,设定一个url清单,不在不在url清单中的请求直接拒绝,这样能防止开发中的api泄露。...rest api接口一般会用到GET,POST,PUT,DELETE,未实现的方法则直接返回方法不允许,对于POST,PUT方法的数据采用json格式,并且在进入逻辑前验证是否json,不合法返回json...有一个统一的出错接口,对于400系列和500系列的错误都有相应的错误码和相关消息提示,如401:未授权;403:已经鉴权,但是没有相应权限。如不识别的url: ? 错误的请求参数 ?
REST本身跟http无关,但是目前http是与它相关的唯一实例。REST有着优雅、简洁的特性,本文是根据豆瓣api来谈谈自己对restful的一些理解。...4.选择合适的状态码 http请求需要返回状态码,约定俗成的状态码能够帮助开发团队提高沟通效率。...2xx: 请求正常处理并返回 3xx: 重定向 4xx: 客户端请求有错误 5xx: 服务端请求有错误 比如豆瓣api返回的状态码说明: 状态码 含义 说明 200 ok 请求成功 201 created...创建成功 202 accepted 更新成功 400 bad request 请求不存在 401 unauthorized 未授权 403 forbidden 禁止访问 404 not found 资源不存在...8.参考资料 本文参考了以下的资料: 豆瓣api 理解restful架构 restful introduction 跟着github学习restful api设计 REST接口设计规范 restful
同样,将数据提供给客户端的方式是 GraphQL 和 REST 分歧最大的地方。在 REST 设计中,客户端提交 HTTP 请求,数据作为 HTTP 响应返回。...GraphQL 的安全控制不如 REST API 中的安全控制发达。为了利用 GraphQL 中的数据验证等当前功能,开发人员必须设计新的身份验证和授权技术。...为了避免数据获取不足和过度获取,灵活的样式定义了信息请求的结构,并从服务器返回相同的结构。 与 GraphQL 相比,REST API 具有严格的数据结构,可能首先返回不相关的信息(过度获取)。...错误处理 每个 GraphQL 请求、成功或错误都会返回 200 状态代码。与 REST API 相比,这是一个明显的区别,在 REST API 中,每个 状态代码都指向某种类型的响应。...Status Code REST GraphQL 200 Ok Ok 400 Bad Request - 401 Unauthorized - REST API 的错误可以有 200 以外的任何代码,
在前面文章 Springcloud Oauth2 HA篇 中,实现了基于 Oauth2 的统一认证的认证与授权。...user-info-uri 的原理是在授权服务器认证后将认证信息 Principal 通过形参绑定的方法通过URL的方式获取用户信息。当然它也有配套的 UserInfoTokenService 等。...","status":401}} 但认证中心给返回的404状态码,此时会走统一异常EntryPoint提示报错:无效的token,请重新认证访问。...从而返回信息体:{"data":"b34841b4-61fa-4dbb-9e2b-76496deb27b4","result":{"code":20202,"msg":"未认证","status":401...接下来分析:为什么认证中心会返回404呢?
一、REST API 简介 REST的全称是REpresentational State Transfer,表示表述性无状态传输,无需session,所以每次请求都得带上身份认证信息。...二、身份认证 身份认证包含很多种,有HTTP Basic,HTTP Digest,API KEY,Oauth,JWK等方式,下面简单讲解下: 2.1 HTTP Basic REST由于是无状态的传输,所以每一次请求都得带上身份认证信息...三、授权 身份认证之后就是授权,根据不同的身份,授予不同的访问权限。比如admin用户,普通用户,auditor用户都是不同的身份。简单的示例: #!...rest api接口一般会用到GET,POST,PUT,DELETE,未实现的方法则直接返回方法不允许,对于POST,PUT方法的数据采用json格式,并且在进入逻辑前验证是否json,不合法返回json...有一个统一的出错接口,对于400系列和500系列的错误都有相应的错误码和相关消息提示,如401:未授权;403:已经鉴权,但是没有相应权限。
1 简介 REST API 安全设计指南。...,途中的 rest_api 是从 url 获取的为/rest/v1/interface/eth0,最后计算 sign 值,之后和 url 中的 sign 值做校验。...REST api 接口一般会用到 GET、POST、PUT、DELETE,未实现的方法则直接返回方法不允许,对于 POST、PUT 方法的数据采用 json 格式,并且在进入逻辑前验证是否 json,不合法则返回...有一个统一的出错接口,对于 400 系列和 500 系列的错误都有相应的错误码和相关消息提示,如 401:未授权;403:已经鉴权,但是没有相应权限。...返回数据统一编码格式,统一返回类型,如 Content-Type: application/json; charset=”UTF-8″ 3 .
当然可以,我们可以通过调用标准的rest api接口去搞定。...我们在上一篇讲述了标准的rest api,那OK,我们可以尝试不适用后台apex方式去搞定,而是在前台通过rest api去玩一下,说到做到,开弄。...好家伙,尽管console报错是CORS,但是其实这个问题的rootcause是 请求返回的code是401未授权,打开 rest api 文档查看一下 ?...破案了,后台通过 UserInfo.getSessionId获取的session信息无法用于REST API的授权,这里就会有一个疑问,因为艾总发过来了一个VF的demo,是可以通过rest去调用的,难道是...总结:篇中只展示了一下通过 REST API去批量操作数据的可行性,仅作为一个简单的demo很多没有优化,异常处理,错误处理等等。而且对数据量也有要求,200以内。
limit=10:指定返回记录的数量 https://api.example.com/v1/zoos?...offset=10:指定返回记录的开始位置 https://api.example.com/v1/zoos?...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...{ error: "Invalid API key" } 返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范。...API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
废话不多说,直接正文开始 认证介绍 和Web应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权状态可能没通过...ok,不出意外的话,相信你已经可以收到一个access_token了,接下来就是如何使用这个token,如何维持认证状态,达到不携带这个token将无法访问,返回401 维持认证状态 实现认证只需两步:...401了?...上面的格式本章并不存在,你只要返回 401 即可 ok,这里介绍两种访问方式,一种是URL访问,另一种是通过header 来进行携带 http://youdomain/articles?...魏曦老师 学的 魏曦教你学 写完认证发现我们的接口返回的数据不是很直观,现实生活中通常也不是这样子的,我们可能会返回一些特定的格式 自定义响应内容 打开 api\config\main.php 在 components
如果没有令牌、令牌非法或角色不符,则一个 401 Unauthorized 响应会被返回。...中基于角色的授权 API 从以上 URL 中下载或 clone 实验项目 运行 npm install 安装必要依赖 运行 npm start 启动 API,成功会看到 Server listening...roles.includes(req.user.role)) { // 未授权的用户角色 return res.status(401).json...返回的第二个中间件函数基于用户角色,检查通过认证的用户被授权的访问范围。 如果认证和授权都失败则一个 401 Unauthorized 响应会被返回。...用来签名和校验 JWT 令牌从而实现认证,应将其更新为你自己的随机字符串以确保无人能生成一个 JWT 去对你的应用获取未授权的访问。
permission, 'message', None) ) 和用户认证一样,同样遍历一个权限类对象列表,并且调用该列表中元素的has_permission()方法,该方法返回布尔值...default_code = 'not_authenticated' NotAuthenticated会导致一个401错误(缺少用户凭证) class PermissionDenied(APIException...default_code = 'permission_denied' 而PermissionDenied会返回错误403(拒绝授权访问) 在向permission_denied()类传递参数时,使用了反射...示例 # api/utils/Permission.py from rest_framework.permissions import BasePermission class CommonPermission...*args, **kwargs): return HttpResponse('POST') class VipIndexView(APIView): """ 只授权给
在这个教程中,我将会诠释REST的基础以及如何给应用创建一个API(包括认证授权)。 ? 什么是API?...一个API中可能命名一个URL为/view_widgets,但是另一个API可能就命名成/widgets/all. 不用担心!REST帮你搞定这些混乱! 什么是REST呢?...– 未授权(需要登录) 404 – 找不到 (找不到所请求的文件或脚本) 405 – 不允许此方法(错误的 HTTP方法) 409 – 冲突 (IE尝试以PUT请求创建相同的资源时) API响应格式...GET /widgets Accept: application/json 我们的API将会以JSON的格式返回一批部件: [ { id:123, name:'...没理由去支持其他的格式,除非你已经有一个可支持的API。 创建一个REST API 事实上,创建一个REST API是超出此教程范围的,因为它是有特定语言的。
什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审视整个网络...REST framework特性 直观的 API web 界面 多种身份认证和权限认证方式的支持 内置了 OAuth1 和 OAuth2 的支持 内置了限流系统 根据 Django ORM 或者其它库自动序列化...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...{ error: "Invalid API key" } 返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范 GET /collection:返回资源对象的列表(数组) GET /collection...:返回完整的资源对象 DELETE /collection/resource:返回一个空文档 Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他
领取专属 10元无门槛券
手把手带您无忧上云