因为安全问题,最终还是放弃了Rest!

Rest介绍

REST(Representational State Transfer)是一种软件架构风格,用于设计网络服务和API。它是由Roy Fielding在他的博士论文中提出,并成为HTTP协议的基石之一。

REST基于以下几个主要原则:

  1. 资源(Resources):将系统中的每个实体(如用户、产品、订单等)都视为一个资源,每个资源可以通过唯一的标识符进行访问。
  2. 统一接口(Uniform Interface):使用统一的接口来处理资源,包括使用HTTP动词(GET、POST、PUT、DELETE等)进行操作,并通过URI(资源标识符)来定位资源。
  3. 无状态(Stateless):服务器不会存储客户端的状态信息,每个请求都应该包含足够的信息以完成请求处理。
  4. 按需响应(Response on Demand):服务器按照客户端请求的内容返回相应的数据,可以是HTML、JSON、XML等格式。
  5. 可缓存性(Caching):对于可缓存的响应,客户端可以缓存结果以提高性能和减少对服务器的请求。

Rest示例

下面是一个简单的REST示例,以管理用户资源为例:

  1. 获取用户列表:发送GET请求来获取所有用户信息。
GET /users
  1. 获取特定用户:发送GET请求来获取特定用户的详细信息。使用用户ID作为路径参数。
GET /users/{user_id}
  1. 创建用户:发送POST请求来创建新用户。请求体中包含新用户的信息。
POST /users

Request Body:
{
  "name": "John Doe",
  "email": "[email protected]",
  "age": 25
}
  1. 更新用户:发送PUT请求来更新特定用户的信息。使用用户ID作为路径参数,并在请求体中包含更新后的用户信息。
PUT /users/{user_id}

Request Body:
{
  "name": "Jane Smith",
  "email": "[email protected]",
  "age": 30
}
  1. 删除用户:发送DELETE请求来删除特定用户。使用用户ID作为路径参数。
DELETE /users/{user_id}

Rest优点

用了这么多年 Rest,总结几个优点(从上述示例也可以看出)。

  • Rest 具备规范性,GET/POST/PUT/DELETE 分别代表 获取/创建/修改/删除 操作。
  • Rest 表意明确,可读性强,代码清晰。
  • GET/PUT/DELETE 都是幂等的,若操作失败,可以进行重试,确保资源的一致性。一些框架可以基于此特性做一些重试机制。

但是最近的一系列安全问题,最终我们放弃了Rest。

安全问题

由于我们是 ToG 行业,没有什么比安全更大的问题,任何技术的先进性在安全性面前都不值得一提。以下是着重碰到的安全问题:

  1. 国产安全软件(深信服等)将 PUT/DELETE 直接定性为非法请求,所有的此类请求都需要修改成 POST。以前的方案是我们在前端统一将 PUT/DELETE 改成 POST,在 HEADER 中将原始请求类型作为参数带到请求中,后端网关层统一将 POST 转为原始请求转发到对应的服务(前端和后端基本都不用改)。
  2. 暴力遍历问题。如 GET /users/{user_id} ,不法分子可以使用下述请求暴力获取数据,存在安全隐患。最近碰到个银行系统,必须要整改!!
GET /users/1
GET /users/2
GET /users/3
GET /users/...
GET /users/n
  1. 数据越权问题。前端请求 token 与请求参数代表的用户不一致,如 token 代表是 A 用户,但实际请求的 GET /order/{order_id} 中 order_id 是 B/C/D/E/…/N 用户的,存在数据越权访问。必须整改!!!
  2. 请求明文问题。用 GET 请求在参数中都是明文传输,直接可以通过浏览器 F12 就能看到请求参数,不安全!!!

解决方案

将所有请求都改成 POST ,请求参数放在 Body 中,前端做一层简单的签名和加密。F12看不出来、安全工具也扫不出来,万事大吉!!

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/148395.html<

(0)
管理的头像管理
上一篇2025-03-12 03:27
下一篇 2025-03-12 03:28

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注