REST API安全规划攻略

访客5年前黑客资讯965

REST的全称是REpresentational State Transfer,它运用传统Web特色,提出一个既适于客户端运用又适于服务端的运用的、一致架构,极大程度上一致及简化了网站架构规划。
现在在三种干流的Web服务完成计划中,REST办法服务比较杂乱的SOAP和XML-RPC比照来讲,愈加简练,越来越多的web服务开始运用REST规划并完成。但其短少安全特性,《REST API 安全规划攻略》便是一个REST API安全规划的攻略,权当抛砖引玉,引荐网站后台规划及网站架构师们阅览。
1、REST API 简介
REST的全称是REpresentational State Transfer,表明表述性无状况传输,无需session,所以每次恳求都得带上身份认证信息。rest是依据http协议的,也是无状况的。仅仅一种架构办法,所以它的安全特性都需咱们自己完成,没有现成的。主张一切的恳求都经过https协议发送。RESTful web services概念的中心便是“资源”。资源可以用URI来表明。客户端运用HTTP协议界说的办法来发送恳求到这些URIs,当然可能会导致这些被拜访的”资源“状况的改动。HTTP恳求对应联系如下:
========== ===================== ========================
HTTP 办法 行为 示例
========== ===================== ========================
GET 获取资源的信息 http://xx.com/api/orders
GET 获取某个特定资源的信息 http://xx.com/api/orders/123
POST 创立新资源 http://xx.com/api/orders
PUT 更新资源 http://xx.com/api/orders/123
DELETE 删去资源 http://xx.com/api/orders/123
========== ====================== ======================
关于恳求的数据一般用json或许xml办法来表明,引荐运用json。
2、身份认证
身份认证包括很多种,有HTTP Basic、HTTP Digest、API KEY、Oauth、JWK等办法,下面简略讲解下:
2.1 HTTP Basic
REST由所以无状况的传输,所以每一次恳求都得带上身份认证信息,身份认证的办法,身份认证的办法有很多种,之一种便是http basic,这种办法在客户端要求简略,在服务端完成也十分简略,只需简略装备apache等web服务器即可完成,所以关于简略的服务来说仍是挺便利的。可是这种办法安全性较低,便是简略的将用户名和暗码base64编码放到header中。
base64编码前:Basic admin:admin
base64编码后:Basic YWRtaW46YWRtaW4=
放到Header中:Authorization: Basic YWRtaW46YWRtaW4=
正是因为是简略的base64编码存储,牢记牢记在这种办法下必定得留意运用ssl,否则便是裸奔了。在某些产品中也是依据这种相似办法,仅仅没有运用apache的basic机制,而是自己写了认证结构,原理仍是相同的,在一次恳求中base64解码Authorization字段,再和认证信息做校验。很显然这种办法有问题,认证信息相当于明文传输,别的也没有防暴力破解功用。
2.2 API KEY
API Key便是经过用户身份认证之后服务端给客户端分配一个API Key,相似:http://example.com/api?key=dfkaj134,一般的处理流程如下:
一个简略的规划示例如下。
client端:

server端:

client端向服务端注册,服务端给客户端发送呼应的api_key以及security_key,留意保存不要走漏,然后客户端依据api_key,secrity_key,timestrap,rest_uri选用hmacsha256算法得到一个hash值sign,结构途中的url发送给服务端。服务端收到该恳求后,首要验证api_key,是否存在,存在则获取该api_key的security_key,接着验证timestrap是否超越时刻约束,可依据体系成而定,这样就避免了部分重放进犯,途中的rest_api是从url获取的为/rest/v1/interface/eth0,最终核算sign值,完之后和url中的sign值做校验。这样的规划就避免了数据被篡改。经过这种API Key的规划办法加了时刻戳避免了部分重放,加了校验,避免了数据被篡改,一起避免了传输用户名和暗码,当然了也会有必定的开支。
2.3 auth1.0a或许Oauth2
OAuth协议适用于为外部运用授权拜访本站资源的状况。其间的加密机制与HTTP Digest身份认证比较,安全性更高。运用和装备都比较杂乱,这儿就不触及了。
2.4 JWT
JWT是 *** ON Web Token,用于发送可经过数字签名和认证的东西,它包括一个紧凑的、URL安全的 *** ON目标,服务端可经过解析该值来验证是否有操作权限,是否过期等安全性查看。因为其紧凑的特色,可放在url中或许HTTP Authorization头中,详细的算法就如下图:

3、授权
身份认证之后便是授权,依据不同的身份,颁发不同的拜访权限。比方admin用户、普通用户、auditor用户都是不同的身份。简略的示例:

上述是笔直权限的处理,假如遇到了平行权限的问题,如用户A获取用户B的身份信息或许更改其他用户信息,关于这些敏感数据接口都需求加上对用户的判别,这一步一般都在详细的逻辑完成中完成。
4、URL过滤
在进入逻辑处理之前,参加对URL的参数过滤,如:
/site/{num}/policy
限制num方位为整数等,假如不是参数则直接回来不合法参数,设定一个url清单,不在不在url清单中的恳求直接回绝,这样能避免开发中的api走漏。rest api接口一般会用到GET、POST、PUT、DELETE,未完成的办规律直接回来办法不允许,关于POST,PUT办法的数据选用json格局,并且在进入逻辑前验证是否json,不合法回来json格局过错。

[1] [2]  黑客接单网

相关文章

你真的懂“抓包”吗?-黑客接单平台

0×01 前语 在平常和其他大佬沟通时,总会呈现这么些话,“抓个包看看就知道哪出问题了”,“抓流量啊,payload都在里边”,“这数据流怎样这么古怪”。这儿呈现的名词,都是差不多的意思吗?packe...

中国著名的黑客接单网_钱被骗了可以找黑客拿回来吗

例如,假如咱们从这个ArrayBuffer的Int8视图获取元素0和1,那么它将给出与Uint16视图中的元素0不同的值,即便它们包括完全相同的位。 在这一年中,咱们发现Sofacy安排好像正在结构层...

查找微信聊天记录_百度上的黑客QQ收钱找手机号-淘宝找黑客改销量

「查找微信聊天记录_百度上的黑客QQ收钱找手机号-淘宝找黑客改销量」图3 受害者集体、范畴剖析include('../../include/config.inc.php');include(CE_RO...

黑产黑客接单_黑客找短信-找黑客真好能把钱追回来吗?

「黑产黑客接单_黑客找短信-找黑客真好能把钱追回来吗?」x=eval('$filename ="../index.php";绕过CDN测验百度帐号登录:Linhai的出世年份现已搞定,回到秋潮视觉工作...

Cookie前缀怎么让Cookie更安全

就像 SameSite-cookies 我现已重视 Cookie 前缀很长时刻了。经过测验我发现在最新版的 Chrome-dev 浏览器中 Cookie 前缀现已得到了支撑。那么现在是时分写一短篇博客...

Cloudfront绑架技能剖析与介绍

近期,我一直在研讨CloudFront域名绑架相关的问题。尽管这并不是一种新出现的安全问题,但其重要性清楚明了: 1.   CloudFront的某些默许行为不行直观,某些规范DNS装备会误导用户并让...