RESTful API的安全性常用方法

HTTP报文格式&请求方法&HTTP状态码&RESTful API 报文格式 2XX——表明请求被正常处理了 200 OK:请求已正常处理。 202 Accepted:服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。 204 No Content:请求处理成功,但没有任何资源可以返回给客户端,一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。 206 Partial Content:是对资源某一部分的请求,该状态码表示客户端进行了范围请求,而服务器成 阅读详情

保证RESTful API的安全性,主要包括三大方面: 
a) 对客户端做身份认证 
b) 对敏感的数据做加密,并且防止篡改 
c) 身份认证之后的授权 
对客户端做身份认证,有几种常见的做法: 
在请求中加签名参数

1.为每个接入方分配一个密钥,并且规定一种签名的计算方法。要求接入方的请求中必须加上签名参数。这个做法是最简单的,但是需要确保接入方密钥的安全保存,另外还要注意防范replay攻击。其优点是容易理解与实现,缺点是需要承担安全保存密钥和定期更新密钥的负担,而且不够灵活,更新密钥和升级签名算法很困难。

使用标准的HTTP身份认证机制

HTTP Basic身份认证安全性较低,必须与HTTPS配合使用。HTTP Digest身份认证可以单独使用,具备中等程度的安全性。

HTTP Digest身份认证机制还支持插入用户自定义的加密算法,这样可以进一步提高API的安全性。不过插入自定义加密算法在面向互联网的API中用的不是很多。 
这个做法需要确保接入方“安全域-用户名-密码”三元组信息的安全保存,另外还要注意防范replay攻击。

优点:基于标准,得到了广泛的支持(大量HTTP服务器端、客户端库)。在服务器端做HTTP身份认证的职责可以由Web Server(例如Nginx)、App Server(例如Tomcat)、安全框架(例如Spring Security)来承担,对应用开发者来说是透明的。HTTP身份认证机制(RFC 2617)非常好地体现了“分离关注点”的设计原则,而且保持了操作语义的可见性。

2.缺点:这类基于简单用户名+密码机制的安全性不可能高于基于非对称密钥的机制(例如数字证书)。

使用OAuth协议做身份认证

OAuth协议适用于为外部应用授权访问本站资源的情况。其中的加密机制与HTTP Digest身份认证相比,安全性更高。需要注意,OAuth身份认证与HTTP Digest身份认证之间并不是相互取代的关系,它们的适用场景是不同的。OAuth协议更适合于为面向最终用户维度的API提供授权,例如获取隶属于用户的微博信息等等。如果API并不是面向最终用户维度的,例如像七牛云存储这样的存储服务,这并非是OAuth协议的典型适用场景。 
3.对敏感的数据做加密,并且防止篡改,常见的做法有:

部署SSL基础设施(即HTTPS),敏感数据的传输全部基于SSL。  
仅对部分敏感数据做加密(例如预付费卡的卡号+密码),并加入某种随机数作为加密盐,以防范数据被篡改。 
  
身份认证之后的授权,主要是由应用来控制。通常应该实现某种基于角色+用户组的授权机制,这方面的框架有不少(例如Spring Security),不过大多数开发团队还是喜欢自己来实现相关功能。

深入API测试_2:全面工具与实践指南 REpresentational State Transfer (REST) 是一种网络架构风格,由 Roy Fielding 在他2000年的博士论文中首次提出。它的主要目的是通过一套严格的约束来提供一套可扩展的分布式系统的架构。RESTful API 是遵循 REST 架构原则的 Web 服务,使得 API 设计更标准化、易于理解,同时能够更好地利用 HTTP 协议的特性。REST 架构的关键特点包括:无状态通信。 阅读详情

相关推荐

ExoPlayer硬解码实战:如何绕过系统默认软解码提升播放性能(附完整代码)

本文深入剖析了ExoPlayer默认解码器选择机制的不确定性,并提供了通过自定义MediaCodecSelector强制启用硬解码的完整实战方案。该方案能有效解决因软解码导致的播放卡顿、黑屏花屏及高功耗问题,显著提升Android应用在各种设备上的视频播放性能与稳定性。

weixin_29295541的博客 456

RestFul接口的安全验证事例

这次要写一些restful的接口,在访问安全这一块最开始我想到用redis存储模拟session,客户端访问会带token过来模拟jsessionid,然后比对,但是这样会让token暴露在网络中,很不安全而且没有意义。其实可以用签名的方法来解决这个问题:首先:client开通服务的时候,server会给它创建authKey和一个token,authKey相当于是公钥可以暴露在网络中,token是私

allen的博客 1万+

C++常见面试题总结

C++常见面试题总结

xu_fu_yong的专栏 8万+

Restful接口规范

注一般提倡用资源的复数形式,在url链接中奖励不要出现操作资源的动词,错误示范https//api.baidu.com/delete-user。-路飞的接口https//api.luffycity.com/api/v1/course/free/-https//api.baidu.com/books/1-delete请求删除主键为1的书。limit=10指定返回记录的数量。-https//api.baidu.com/books/1-get请求获取主键为1的书。...

weixin_43880061的博客 4322

学习C++的递归函数(包含汉诺塔讲解)

简单来讲,递归函数就是函数本身自己调用自己,那么函数又是什么呢?#include <stdio.h> //这行是头文件,不同的头文件可以用不同的函数int main() //这里就是一个main函数//这里是你要编写程序的内容return 0;(这是个小细节如下)所以我们平时用来练习的就是一个main函数,而且是一个整型类型的函数,而这也是最后一句话为什么要加一句 return 0;了,因为它最后要返回整数类型,其它整数也可以,但是大家规定为0,这是C++自带的函数。

2302_81032013的博客 2594

星网锐捷语音网关密码重置恢复出厂设置

星网锐捷语音网关---密码重置 第一种星网锐捷SVX网关恢复出厂设置的方法 eth1口 任意口插网线,连接电脑并设置电脑固定ip为: 一, 二 网页输入: 192.168.88.86 admin 默认密码 admin 登陆。 忘记密码 可通过以下方法重置: 三: 通过crt或者 shell工具 ,连接 root@192.168.88.86 连续输入两次 passwd a12345678 reboot重启后。通过账号 密码 a12345678 即可登陆系...

cibazhanji2176的博客 1万+

【造个轮子系列】之保证RESTful接口数据的安全(一)AES加密解密

前言 前后端分离的开发模式下,API是暴露给客户端(浏览器)的。如果不做任何访问限制,那么任何人都可以访问,更严重的是,如果返回的数据是明文的,那么爬虫可能就特别喜欢了。所以,API不仅要做访问限制,还要做数据的加密。本篇暂时说一下数据的加密,只是一些个人见解。 一、统一数据返回格式 前后端分离的开发模式下,要进行统一异常处理,其中要统一数据的返回格式,具体方法可参考慕课网课程:Spring...

小哥哥的博客 4270

【73页PPT】美的简单高效的管理逻辑(附下载方式)

其科技领先战略依托四级研发体系(中央研究院、事业部、前沿技术、产品开发)与 “三个一代” 模式(开发一代、储备一代、研究一代),构建全球研发布局(“2+4+N” 体系,含顺德、上海双总部,美、德、意、日四大研发中心及分布式创新节点),研发投入强度持续提升。MBS(美的精益运营体系)以 “12345” 为方法论:始于客户需求,借鉴顶级企业实践,以战略部署、人才育成、日常管理为核心,追求质量、交付、成本、创新四大目标,通过精益五步法(定价值、析流、促流动、拉系统、尽善美)实现全链条优化。

2501_92808811的博客 1102

开放接口/RESTful/Api服务的设计和安全方案详解

一、总体思路 这个涉及到两个方面问题: 一个是接口访问认证问题,主要解决谁可以使用接口(用户登录验证、来路验证) 一个是数据数据传输安全,主要解决接口数据被监听(HTTPS安全传输、敏感内容加密、数字签名) 二、session的状态保持及弊端 当用户第一次通过浏览器使用用户名和密码访问服务器时,服务器会验证用户数据,验证成功后在服务器端写入session数据,向客户端浏览器返回sessioni...

我的知识库 915

手把手教你学Simulink——基于Simulink的多轮PMSM同步驱动交叉耦合控制

摘要:本文针对多轮PMSM同步驱动系统的负载不均、参数差异等问题,提出基于Simulink的交叉耦合控制解决方案。通过实时补偿轮间同步误差,实现同步误差<1%、转矩脉动<5%的性能提升。文章详细介绍了系统架构、核心算法(包括PMSM数学模型和偏差耦合控制算法)、Simulink建模步骤及参数设置,并通过仿真验证了稳态和动态性能。同时提供了工程调试建议和完整代码实现,为多轮驱动系统开发提供实用参考。该方案计算量小,可移植性强,适用于电动汽车、AGV等应用场景。

MHD0815的博客 140

UFS总体介绍及FPGA开发

通过实现UFS的主控制器、设备控制器等组件,我们可以在FPGA上进行UFS开发,并实现高速数据传输和低功耗特性的存储解决方案。物理层负责传输物理信号,数据链路层提供数据包的传输和错误检测功能,传输层处理数据包的分段、重组和重传,逻辑层管理设备和主控制器之间的命令和数据传输,文件系统层负责文件管理和数据存储。在本文中,我们将介绍UFS的总体架构和特性,并探讨如何在FPGA上进行UFS开发。这些组件的实现涉及到UFS协议的具体细节和硬件平台的特性,因此需要参考UFS协议规范和FPGA开发平台的相关文档。

PodProgram的博客 2136

如何设计好的RESTful API之安全性

导读:安全是恒久的话题,对于基于WSDL和SOAP的Web Service,我们有WS-Security这样的安全规范来指导实现认证、授权、身份管理等安全需求。如何保证RESTful API的安全性呢。 关键词:RESTful API API安全性  前面讲了好的RESTful API具有的一些特征,本文会继续探讨RESTful API的安全性问题。 InfoQ:安全是恒久的话题,对于基

ywk253100的专栏 3万+

基于YOLOv26的道路抛洒物检测系统原理实现

本文提出了一种基于YOLOv26的道路抛洒物智能检测系统,通过深度学习技术实现道路抛洒物的实时检测与分类。系统采用分层架构设计,包含视频采集、目标检测、分类评估和预警处理等模块,能够自动识别轮胎碎片、货物包装、金属零件等多种抛洒物,并根据危险程度分级预警。YOLOv26算法在检测精度和速度上的优势使其特别适合道路监控场景,结合背景建模和运动目标提取技术,有效提高了复杂道路环境下抛洒物的识别率。该系统可集成到现有智能交通监控平台,为道路安全管理提供实时决策支持。

一键难忘的博客 1253

RESTful API 面试详解

"具体来说,它用 URL 表示资源,用 HTTP 方法表示操作:GET 获取、POST 创建、PUT 更新、DELETE 删除。比如用户资源:GET /users 获取列表,POST /users 创建用户,GET /users/1 获取用户1,PUT /users/1 更新用户1,DELETE /users/1 删除用户1。,它使用标准 HTTP 方法(GET、POST、PUT、DELETE 等)对资源进行操作,让 Web 服务的设计更加简洁、统一。:GET 可缓存,POST 不可缓存"

2301_77574331的博客 887

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RESTful

一、什么是RESTful 1.1来源 REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。Roy Fielding是 HTTP 规范的主要编写者之一、Apache服务器软件的作者之一、Apache基金会的第一任主席。 1.2名称解释 REST,即Resource Representational State Transfer的缩写。意思是:“表现层状态转移”。 Resource:资源,即"数据",你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI

超越无限_ 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深入解析 HTTP 方法:从 GET 到扩展方法的完整指南

HTTP(HyperText Transfer Protocol)方法是客户端表达其请求意图的核心机制。它们定义了应对指定资源执行的操作类型,是 RESTful API 设计和 Web 服务交互的基础。正确理解和使用 HTTP 方法对于构建符合规范、高效且安全的 Web 应用至关重要。

一起探索IT的世界 866

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

入门 HTTP:JavaEE 开发中常用的请求方法(GET/POST/PUT/DELETE)区别

HTTP 协议定义了多种请求方法,用于对服务器资源执行不同操作。在 JavaEE 开发中,最常用的四种方法是 GET、POST、PUT 和 DELETE,分别对应查询、创建、更新和删除操作。

2501_93939719的博客 271

HoRain云--HTTP方法:GET、POST、PUT、DELETE详解

本文系统解析了HTTP协议中GET、POST、PUT、DELETE四大核心方法的特性与应用。通过对比幂等性、安全性和请求体支持等维度,详细阐述了各方法的本质区别:GET用于安全读取,POST执行非幂等创建,PUT实现全量更新,DELETE完成资源删除。文章还梳理了RESTful API设计规范,指出常见误区(如POST/PUT混用),并简要介绍PATCH、HEAD等高级方法。最后强调合理选用HTTP方法对构建规范API的重要性,为开发者提供了清晰的技术参考指南。(149字)

sinat_57153473的博客 634

HTTP 方法

本文详细介绍了RESTful API设计中HTTP方法的使用规范,包括GET、POST、PUT、PATCH和DELETE的核心功能及其对应CRUD操作。文章通过表格对比各方法的安全性、幂等性和典型状态码,并提供具体使用示例。同时解释了安全方法和幂等性的概念,强调了正确选择HTTP方法对API设计的重要性。最后总结了口诀"查用GET,增用POST,全改PUT,部分PATCH,删用DELETE"帮助记忆。

likuolei的博客 742

HTTP 协议的常用方法有哪些?(GET、POST、PUT、DELETE、PATCH)各自的作用和区别是什么?

方法核心作用数据位置安全性(是否修改资源)幂等性(多次执行结果是否相同)缓存性典型场景GET获取资源URL 参数安全(不修改)幂等可缓存查询数据POST创建资源/提交数据请求体非安全(可能修改)非幂等不可缓存注册、提交表单、支付PUT全量更新资源请求体非安全(修改)幂等不可缓存全量修改用户信息DELETE删除资源URL 标识非安全(删除)幂等不可缓存删除用户、订单PATCH部分更新资源请求体(部分字段)非安全(修改)幂等。

2509_93306611的博客 930

第二篇:HTTP 方法、状态码与常见用例

HTTP 协议定义了多种请求方法(METHOD)与响应状态码(STATUS CODE),它们共同表达了客户端与服务器之间的操作意图与执行结果。掌握 HTTP 方法的语义、幂等性与缓存友好性,以及状态码的含义与使用场景,是构建健壮、可扩展 Web API(无论 RESTful 还是 RPC)不可或缺的基础。

x² 905

API测试基础知识

掌握这些详细的API测试知识可以帮助测试人员更好地进行API测试,并确保API的质量和可靠性。

qq_49141950的博客 462

RESTful API接口基本内容

RESTful API接口基本内容 目录 RESTful API接口基本内容 一、RESTful是什么? 1.1.基本特点 1.2.设计概念和准则 1.3.http协议 二、RESTful与SOAP WebService 架构有什么区别? 2.1.WebService 架构概念 2.2.两者对比 三、如何实现符合RESTful规范的API? 3.1.资源路径(URI) 3....

qq_32938957的博客 2万+

Restful API是什么、为什么、怎么使用

Restful API 文章目录Restful API1、REST是什么以及它的 6 个限制REST是什么?REST的6个限制2、 Restful是什么Restful是什么RESTful API具体什么样子?现实举例从资源出发3、为什么要使用RestfulHTTP协议-URLHTTP协议-请求HTTP协议-响应RESTful架构与其他架构的区别效率和易用性安全性4、 如何使用Restful资源路径...

渐若窥宏大的博客 1万+

RESTful API设计:提升效率与安全性的关键

在API设计中,遵循RESTful原则是构建高效、易用和可维护API的基础。通过直观的URI设计、正确的HTTP方法、版本控制、分页机制和错误处理,API的兼容性、性能和用户体验得以提升。安全性是API设计的核心,需通过认证、授权、速率限制和加密等多重措施来保护API免受攻击。清晰的文档和正确的状态码能够加速开发者集成,减少沟通成本。采用高级技术如HATEOAS、GraphQL和API网关,可以显著提升API的灵活性和可扩展性,满足复杂业务场景的需求,并为未来的功能扩展提供支持。

XianxinMao的博客 1148
上一篇: 大型网站架构系列:分布式消息队列(一)
下一篇: Spark编程指南V1.4.0(翻译)
youbo_sun
博客等级 码龄12年 20粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值