API 接口的安全设计验证:ticket,签名,时间戳

哈希珊瑚
• 阅读 309

1.与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露,甚至会被篡改数据

2.与第三方公司的接口对接,第三方如果得到你的接口文档,但是接口确没安全校验,是十分不安全的

我主要围绕时间戳,token,签名三个部分来保证API接口的安全性

API接口的安全设计验证通常包括以下几个方面:ticket机制、签名验证、时间戳验证。

导图:
API接口的安全设计验证:

  • Ticket

    • 用途: 标识和验证用户身份
    • 实现方式:

      • 用户登录成功后生成一个ticket,并将其返回给用户
      • 用户在每次请求API时,都需要将ticket作为参数发送给服务器
      • 服务器端验证ticket的有效性,以确认用户的身份
    • 注意事项:

      • ticket应具有一定的时效性,避免安全漏洞
      • ticket应采用加密算法生成,提高安全性
  • 签名

    • 用途: 验证数据的完整性和真实性
    • 实现方式:

      • 将请求参数按照预定规则排序后,进行加密生成签名
      • 将签名作为参数发送给服务器端
      • 服务器端通过相同的规则对请求参数进行排序,并使用同样的加密算法生成签名
      • 对比服务器端生成的签名和请求中传递的签名,以验证数据的完整性和真实性
    • 注意事项:

      • 签名中应包含时间戳,以避免重放攻击
      • 加密算法应为不可逆的,确保数据的安全性
  • 时间戳

    • 用途: 避免重放攻击和保证数据的时效性
    • 实现方式:

      • 在API请求中添加一个时间戳参数,表示请求的时间
      • 服务器端接收到请求后,比较时间戳与当前时间的差距
      • 如果时间差超过一定范围,则判定请求为无效
    • 注意事项:

      • 时间戳应使用可靠的时钟来源,以确保准确性
      • 时间戳的有效范围需要根据实际需求设定

正文:

  1. Ticket机制:Ticket机制是一种用户身份验证的方式。在API接口请求中,客户端通常需要提供一个有效的Ticket,来证明自己的身份合法。服务端会根据Ticket进行身份验证,并根据验证结果决定是否授权请求。
  2. 签名验证:签名验证是一种对请求参数和密钥进行加密的方式,用于验证请求数据的完整性和真实性。客户端在发送请求时,会将请求参数和密钥进行加密,并将签名值作为请求参数之一发送给服务端。服务端通过验证签名值的正确性,来判断请求是否被篡改。
  3. 时间戳验证:时间戳验证用于验证请求的有效期。客户端在发送请求时,会附带一个时间戳参数,表示请求的发起时间。服务端会检查时间戳是否在一定的有效期内,如果超过有效期,则认为请求已过期。

这些安全设计验证措施可以有效防止未授权访问、请求篡改和重放攻击等安全问题。同时,为了进一步提升安全性,还可以结合其他安全措施,如使用HTTPS协议进行数据传输、限制API请求频率等。

Ticket机制是一种用于管理和控制系统资源访问的流程。以下是Ticket机制的典型流程:

  1. 用户请求资源:用户向系统发起资源访问请求,例如请求访问某个文件或执行某个操作。
  2. Ticket生成:系统根据用户请求生成一个唯一的Ticket,并将其分配给用户。Ticket通常包含一些关键信息,如用户身份、访问权限和有效期等。
  3. Ticket传递:系统将生成的Ticket传递给用户。通常,这可以通过将Ticket作为响应返回给用户的方式实现。
  4. Ticket验证:用户在访问资源时,将Ticket提供给系统进行验证。系统会检查Ticket的有效性,并验证用户是否具有访问该资源的权限。
  5. 资源访问授权:如果Ticket有效且用户具备访问权限,系统会授予用户对资源的访问授权。用户可以继续访问资源,执行所需的操作。
  6. Ticket作废:一旦用户完成资源访问或Ticket过期,系统将作废Ticket,不再接受该Ticket的验证请求。

Ticket机制的优势在于可以通过有效的身份验证和访问控制,确保用户只能访问其具有权限的资源,并提供一定程度的安全性和保护。同时,Ticket可以用于跟踪和记录用户的活动,方便系统监控和审计。

签名验证的流程如下:

  1. 客户端发送一个请求给服务器,并附带了一个签名。
  2. 服务器接收到请求后,首先从请求中提取出签名。
  3. 服务器获取请求所需的数据,并采用相同的签名算法对这些数据进行签名,并生成一个新的签名。
  4. 服务器将生成的签名与请求中的签名进行比较。
  5. 如果两个签名一致,则说明请求的签名是有效的,服务器可以接受并处理请求。
  6. 如果两个签名不一致,则说明请求的签名是无效的,服务器拒绝接受请求。

通过以上流程,服务器可以验证请求中的签名是否有效,从而确保请求的合法性。

时间戳验证:
时间戳验证流程是一种验证数字文件或数据的完整性和不可篡改性的方法。以下是常用的时间戳验证流程:

  1. 生成哈希值:首先,对要验证的文件或数据生成一个哈希值。哈希算法会将原始数据转换为一个固定长度的字符串,该字符串唯一地表示原始数据。
  2. 获取时间戳:将生成的哈希值发送给一个可信任的时间戳服务提供商。时间戳服务提供商会将哈希值与当前的日期和时间一起记录,并为其生成一个时间戳。
  3. 时间戳签名:时间戳服务提供商会使用其私钥对哈希值和时间戳进行数字签名。
  4. 返回时间戳:时间戳服务提供商将签名后的时间戳返回给用户。
  5. 验证时间戳:用户可以使用时间戳服务提供商的公钥来验证时间戳的有效性。首先,用户使用公钥来验证时间戳的数字签名是否有效。如果签名有效,则可以确定时间戳是由时间戳服务提供商生成的且未被篡改过的。
  6. 验证哈希值:用户还可以使用原始的文件或数据生成哈希值,并将其与

参考资料:
https://www.cnblogs.com/tongcc/p/15889802.html

点赞
收藏
评论区
推荐文章
开放API接口签名验证,让你的接口从此不再裸奔
接口安全问题请求身份是否合法?请求参数是否被篡改?请求是否唯一?AccessKey&SecretKey(开放平台)请求身份为开发者分配AccessKey(开发者标识,确保唯一)和SecretKey(用于接口加密,确保不易被穷举,生成算法不易被猜测)。防止篡改参数签名1.按照请求参数名的字母升序排列非空请求参数(包含AccessK
liam liam
3年前
5分钟打造好用好看API文档
5分钟打造好用好看API文档🤔️你是否遇到过这样的场景?对接第三方开放平台文档的时候,左手刷着接口文档看API,右手操作着接口调试工具🧱写完接口想交付或提供API文档给第三方使用,又觉得文档展示体验一般?很鸡肋?
Wesley13 Wesley13
4年前
jdbc、jpa、spring data jpa、hibernate、mybatis之间的关系及区别
基础概念jdbc(JavaDataBaseConnectivity)是java连接数据库操作的原生接口。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为各个数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。一句话概括:jdbc是所有
Easter79 Easter79
4年前
springboot禁用内置Tomcat的不安全请求方法
起因:安全组针对接口测试提出的要求,需要关闭不安全的请求方法,例如put、delete等方法,防止服务端资源被恶意篡改。用过springMvc都知道可以使用@PostMapping、@GetMapping等这种注解限定单个接口方法类型,或者是在@RequestMapping中指定method属性。这种方式比较麻烦,那么有没有比较通用
Easter79 Easter79
4年前
Swagger生成的接口需要权限验证的处理方法
通常开发API的时候需要对接口进行权限验证,而我们在使用Swagger生成接口文档界面的时候,直接调用需要权限验证的接口会提示"当前用户没有登陆"!(https://oscimg.oschina.net/oscnet/b70cf279698211b11cb1c2530d42b4958c3.jpg)为了解决此问题,我们需要更改一下Swagger的配
Stella981 Stella981
4年前
App开放接口api安全性的设计与实现
前言在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等,但是为了安全起见让用户暴露的明文密码次数越少越好,我们一般在web项目中,大多数采用保存的session中,然后在存一份到cookie中,来保持
如何批量获取拼多多商品详情数据?
批量获取拼多多商品详情数据可以采用以下方式:使用拼多多开放平台API接口。拼多多开放平台提供了API接口,可以通过API接口获取拼多多平台上的商品信息,使用API接口需要进行权限申请和认证,操作较为复杂。使用第三方工具。市面上有许多第三方工具可以实现拼多多
API 小达人 API 小达人
2年前
【前端小技巧】如何使用 Eolink Apilkit 调用 Mock
在开发过程中,进度比较赶的情况下,前端人员当页面写完时,后台的接口还没写完,等要交付的时候后端才把接口给你,这个时候就很尴尬。这个时候Mock就可以很好的解决这个问题,前端团队可以在API还没开发完成的情况下,借助MockAPI实现预对接,加速开发进程。测试团队可以通过MockAPI解决不必要的系统,完成集成测试。EolinkApikit为前端工程师提供API文档管理,快速接口测试,以及MockAPI创建与调用,及查看文档变更历史的能力。有助于前端工程师快速查看API文档详情与历史记录,快速生成和使用MockAPI提前进行页面效果验证。
API 小达人 API 小达人
2年前
「实用技巧」后端如何使用 Eolink Apikit 快速调试接口?
程序员最讨厌的两件事:1.写文档;别人不写文档。写文档、维护文档比较麻烦,而且费时,还会经常出现API更新了,但文档还是旧的,各种同步不一致的情况,从而耽搁彼此的时间,大多数开发人员不愿意写API文档。EolinkApikit为后端工程师提供API文档的创建与自动化生成、快速接口调试、以及API文档版本管理功能,协助后端工程师快速编写文档,调试接口,以及支持版本控制恢复历史记录。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好接口文档,接口调试、数据Mock、接口测试就可以直接使用,无需再次定义。接口文档和接口开发调试使用同一个工具,接口调试完成后即可保证和接口文档定义完全一致。高效、及时、准确!
API 小达人 API 小达人
2年前
Eolink Apikit 快速发起 API 测试,一键生成测试数据
我们在测试接口时,通常需要先创建API文档,再根据API文档生成测试用例。未创建该接口文档,仅临时调试接口,EolinkApikit支持创建API快速测试页面,输入接口相关的信息即可进行快速测试。EolinkApikit支持操作数据库,API测试时,可以一键生成测试请求数据。这可以减少数据输入步骤,提高调试接口效率。
程序员小五 程序员小五
1年前
融云IM干货丨IM - Server API 调试常见问题有哪些?
在融云【北极星】控制台进行IMServerAPI调试时,可能会遇到的一些常见问题包括:Token相关问题:确保Token是有效且未过期的,因为Token是用户身份验证的重要凭证。API调用频率限制:部分API接口有调用频率限制,超过限制会导致请求被拒绝。例
哈希珊瑚
哈希珊瑚
Lv1
露从今夜白,月是故乡明。
文章
3
粉丝
0
获赞
0