首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    REST API 的安全认证,从 OAuth 2.0 到 JWT 令牌

    ---- REST 是一种现代架构风格,它定义了一种设计 Web 服务的新方法。...和之前的 HTTP 以及 SOA 不同,它不是一个协议(即:一套严格的规则),而是一些关于 Web 服务应该如何相互通信的一些建议和最佳实践。...总结: 良好的可伸缩性,可以和微服务一起工作。 新玩意:亚马逊签名方式 一种全新的,奇特的方法,称为 HTTP 签名,亚马逊是目前使用它的大厂之一。...当你要从 Amazon 请求某些资源时,你可以获取到所有相关的 http 头信息,使用这个私钥对其进行签名,然后将签名的字符串作为 header 发送。 在服务器端,亚马逊也有你的访问密钥。...只需要使用你的 http 头信息和这个密钥进行签名。然后将签名字符串和你作为签名的字符串进行比较;如果相同那么就知道你是谁。 最大的好处是你只需要发送一次用户名和密码 - 就可以获得令牌。

    3.9K30

    Bookstore靶机实战:从Web枚举到REST API模糊测试的完整攻破

    枚举阶段我使用Nmap开始信息收集,扫描命令包含:-sC:等效于—script=default-sV:探测开放端口的服务/版本信息-p-:扫描所有端口发现22端口运行SSH服务,80和5000端口运行Web...服务:80端口:Apache 2.4.295000端口:Werkzeug 0.14.1 + Python 3.6在Werkzeug服务器发现关键路径:/robots.txt/api研究发现Werkzeug...0.14.1存在可能的RCE漏洞(参考Rapid7漏洞库)。...通过以下方式获取:对/api端点进行参数模糊测试发现v1存在未修补漏洞使用ffuf工具发现可利用参数:ffuf -u http://IP:5000/api/v2/FUZZ -w wordlist.txt...--hc 404权限提升通过获取的PIN码进入调试控制台使用Reverse Shell Cheat Sheet获取反弹shell发现SUID二进制文件try-harder逆向分析发现关键XOR运算:0x5dcd21f4

    16300

    现代 API 架构设计指南:从 REST 到高效集成的技术实践

    一、RESTful架构的核心约束REST(RepresentationalStateTransfer)作为目前互联网应用最广泛的架构风格,其核心在于将一切资源化。...统一接口(UniformInterface):使用标准的HTTP方法(GET,POST,PUT,DELETE)来表达语义。无状态性(Stateless):每一个请求都必须包含处理该请求所需的全部信息。...二、接口安全与访问控制随着API暴露的攻击面增大,安全性成为架构设计中的重中之重。认证与授权:目前业界主流方案是使用OAuth2.0与JWT(JSONWebTokens)。...JWT因其自包含特征,在分布式环境下无需频繁查询数据库即可完成鉴权。传输层加密:必须全量启用TLS1.2+加密,防止中间人攻击(MITM)。...工具类型代表方案主要作用文档生成Swagger/Redoc自动从代码注释生成可交互的接口文档联调测试Postman/Insomnia模拟请求、编写自动化测试脚本网关管理Kong/Apisix处理路由、限流

    32410

    从围绕API到围绕数据-使用流式编程构建更简洁的架构

    比如,在已有的API中添加监控统计。虽然对统计器做了抽象(对象或者函数),但可能仍然需要侵入到所有不同的API实现中。 // SendStream ......将各种API的原始数据封装为DataItem在流中统一处理,内置session是神来之笔。这个session会包含每条数据的个性化信息。可以由每个步骤增添并提供给下一步骤使用。...// 调用接口 source.GetSource().Via(flow.NewMap(func(i interface{}) interface{} { // 步骤1,创建日志 // 从用户发来的每条消息都被打散成为了数据源的一条数据...(string) // 从数据的session中获取数据的附加信息 tags := map[string]interface{}{ "trace_id": traceID,...简单是一种美,简单的东西一般不容易出错。 隐含了流式编程的主要思想,它并没有什么黑科技,但使用它会强制我们使用面向数据的,抽象的方式来思考问题。最终写出低耦合可调测的代码。这才是难能可贵的。

    1.2K30

    花5分钟看这篇之前,你才发现你不懂RESTful

    当然也有很多在具体使用的时候使用PUT表示更新。从请求的流程来看,RESTful API和传统API大致架构如下: ?...REST架构的一些风格和限制条件就先介绍到这里,后面就对RESTful风格API具体介绍。...从大体样式了解URL路径组成之后,对于RESTful API的URL具体设计的规范如下: 不用大写字母,所有单词使用英文且小写。...不要使用文件扩展名 HTTP动词 在RESTful API中,不同的HTTP请求方法有各自的含义,这里就展示GET,POST,PUT,DELETE几种请求API的设计与含义分析。...在服务器创建新的资源 PUT /collection/resource:更新服务器资源 DELETE /collection/resource:从服务器删除资源 在非RESTful风格的API中,我们通常使用

    1.7K41

    软件开发中常说的RESTful风格API究竟是什么

    在您将看到的这一篇文章中,我们将对REST,尤其是基于HTTP的REST服务进行详细地介绍。...通过这些文章,您不仅可以了解到什么是REST,更能清晰地了解到您在编写REST服务时所需要遵守的各个守则,设计RESTful API时需要考虑的各种因素以及实现过程中可能遇到的问题等内容。...Rest概念 在RESTful架构中,每个网址代表一种资源(resource),所有网址请求接口中不能有动词,只能有名词,这点和数据库设计风格很像。 那么可能有同学会问了?动词怎么来表示呢?...常用的HTTP动词有五个,对应sql中命令。也就是说我们定义接口url中一般不会出现动词,都是使用名词,而动词使用HTTP请求方式来表示。 GET(SELECT):从服务器取出资源(一项或多项)。...DELETE(DELETE):从服务器删除资源。 软件开发中常说的RESTful风格API究竟是什么? 软件开发中常说的RESTful风格API究竟是什么? 三.

    45410

    Restful API设计规范

    RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。...),PUT用来更新资源,DELETE用来删除资源; 3、通过操作资源的表现形式来操作资源; 4、资源的表现形式是XML或者HTML; 5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息...更重要的是,由于http是事实上的互联网通讯标准协议,基于rest设计的api接口,就好像你出国用英语和别人交流,完全不存在沟通障碍。...REST架构,从个人角度理解,核心做了两件事情 资源定位 资源操作 其实从REST的定义中就能看出来,表述层对应的就是描述资源的位置(资源定位),状态转移就是对资源的状态进行变更操作(增删改查) 下面举个实际的例子...除了HTTP METHOD,rest另外一套重要的规范就是HTTP STATUS,这套状态码规范定义了常规的api操作所可能产生的各种可能结果的描述,遵循这套规范,会使得你的api变得更加可读,同时也便于各种网络

    1.7K30

    REST 深度进阶

    从早期的三层架构,到现在的多层、微服务,核心内容之一就是 API --- 从非常简单的 API,到多设备多用途的 API,包括一些外接的三方,像 BAT 的公共服务,简单的、麻烦的,都是 API。...不管怎么说,在我看来,REST 仍然是 API 接口规范的王者,并且不会在短时间内被取代。 在我的习惯中,使用 REST 会有以下几个约束。 1....在我看来,所有的 API 都应该可以在不看注释和说明的情况下被调用方理解,从调用端点,到参数,和 JSON 的键。 这儿,我参考了国外的一些规则。规则也很简单: 用名词,别用动词。...把使用 HTTPs 当成一个标准和习惯,有一天你会感谢自己的。 2. 从构建 API 开始,就要做到控制访问 你看得没错,是从构建 API 开始。...极端情况下,改变内部逻辑,也有可能影响到调用端。 API 版本控制,不用犹豫,马上开始使用。不要觉得某个 API 比较小,或者调用端少,就不去做。

    67310

    REST初体验

    亦可以原文学习, http://www.ruanyifeng.com/blog/2014/05/restful_api.html API与用户的通信协议,总是使用HTTPs协议。...https://api.example.com/v1/ 版本号放在HTTP头信息中,不如放入URL方便和直观。 服务器返回的数据格式,应该尽量使用JSON,避免使用XML。...一般来说,数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数。...常用的HTTP动词有下面五个(括号里是对应的SQL命令)。 GET(SELECT):从服务器取出资源(一项或多项)。 POST(CREATE):在服务器新建一个资源。...PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。 DELETE(DELETE):从服务器删除资源。

    1.1K20

    RESTfulAPI接口设计规范与快速入门

    REST 中天生和 HTTP 协议相辅相成,所以使用标准的HTTP协议方法 POST 、 DELETE 、 PUT 、 GET 方法来对应 REST 资源的增、删、改、查操作。...,每个网址代表一种资源(resource) 使用名词 对于一个简洁结构,你应该始终用名词, 资源作为网址,只能有名词不能有动词 ,而且所用的名词往往与数据库的表名对应。...HTTP动词 GET(SELECT):从服务器取出资源(一项或多项)。 POST(CREATE):在服务器新建一个资源。...PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 DELETE(DELETE):从服务器删除资源。...3.然后初始化数据库实例,建立数据库连接,供后面对数据库的 CRUD 操作使用。

    2.9K40

    RESTful API

    一、 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审视整个网络...那么先来简单了解一下 1、协议 API与用户的通信协议,总是使用HTTPs协议。...一般来说,数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数。...常用的HTTP动词有下面五个(括号里是对应的SQL命令)。 GET(SELECT):从服务器取出资源(一项或多项)。即获取数据 POST(CREATE):在服务器新建一个资源。...即更新数据 DELETE(DELETE):从服务器删除资源 。即删除数据 还有两个不常用的HTTP动词。 HEAD:获取资源的元数据。

    2.2K20

    Django rest Framework入门 二 :DRF框架初体验

    Django rest Framework入门 一 :手工实现常见API中记录了如何手工基于Django实现常见的API类型,这篇笔记记录一下DRF框架简单使用的体验。...'rest_framework', ] 编写序列化器 序列化和反序列化的意思其实就是利用Django的Model将数据库中的数据进行一定的格式修改(比如dict变成json)之后返回给api请求者和将从...api请求获取到的数据写入到数据库的过程。...fields = '__all__' # 指定序列化的字段,这里让所有字段都能被序列化 上面这一段代码的作用其实就是代替了我在手工实现API的时候反复写的利用model从数据库获取数据和将从...DELETE按钮,这个按钮对应的就是DELETE API; 页面的下半部分是一个表格,右下角有一个蓝色的PUT按钮,这个按钮对应的就是PUT API; 通过代码测试 test路径下有一个文件drf_first_seen.py

    87710

    在Express中对MongoDB数据库进行增删改查

    我使用的系统是Windows10系统,采用的开发工具是Visual Studio Code,另外还需要在VSCode中安装REST Client插件,用于发送HTTP请求和查看服务端的响应信息,类似于PostMan...,不过Rest-Client插件可以直接在VSCode中发送HTTP的GET、POST、PUT、DELETE请求,对于开发人员来说很方便,具体可以参考Johnny老师的B站视频VSCode中类似PostMan...的API接口请求利器 - rest client,这篇视频快速的讲解了VSCode中Rest-Client的使用,具体的还可以看VSCode中Rest-Client的使用教程。...// 根据客户端传递过来的id从MongoDB数据库中查询对应的产品 const product = await Product.findById(req.params.id); // 删除查询到的产品...http请求 VScode中的Rest-Client有一个规定,就是http请求文件必须以http为后缀,比如说tets.http文件。

    7.1K10

    跟着官方文档学Python——Django Rest framework

    前后端分离[把前端的界面效果(html,css,js分离到另一个服务端,python服务端只需要返回数据即可]。前端形成一个独立的网站,服务端构成一个独立的网站 什么是API?...状态转移:使用GET/ POST/ PUT/ DELETE等HTTP动词操作资源,实现资源状态转变。 RESTful风格的API即为RESTful API。...通过GET/ POST/ PUT/ DELETE来获取/新建/更新/删除资源。一般使用JSON格式返回数据。大多数web框架都有相应的插件支持RESTful API。...[user_id] 检索单个用户 POST http://[hostname]/api/users 创建新用户 PUT http://[hostname]/api/users/[user_id] 更新用户信息...'rest_framework', ] 在项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤: 将请求的数据(如JSON格式)转换为模型类对象 通过模型类对象进行数据库操作

    3.4K10
    领券