前后端分离如何校验接口调用的合法性

2024-06-16 00:18

本文主要是介绍前后端分离如何校验接口调用的合法性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在前后台数据交互的时候,通过使用给Json添加token验证的方式来保证自己的接口不会被其他人调用并通过在返回字符串中添加token信息和时间戳的方式来保证接口的安全.

token是存放在服务器中的一个以 < K, V > 形式存放的字符串,在用户登录成功后,后台通过以唯一Id为基础(如userId)自动生成随机数的方式生成一个key(如RedisTokenManager.createToken(user.getId()))存放到K中,V则是存放了后台唯一字符串(当前为userId),这样后台就自动生成了一个Token对象,登录成功后每次数据验证都把Token对象放进去以进行校验,此时,还要对token对象进行设置超时时间,当一段时间客户端无响应的时候,服务器会自动清除服务器的token对象,让用户重新登录.

对于前台数据验证:

在前台传到后台数据的时候,除了添加用户名和密码等数据外,还要将token和Timestamp信息也传入到json中一起传到后台,以便于后台信息的校验.

如何保证信息不被泄露:

在传输的过程中通过对数据进行加密验证 , 生成唯一的sign值,当任何人非法修改传递的参数的时候都会导致sign值不匹配从而造成验证失败.因为sign值是MD5加密而且是唯一的,参数修改会导致验证不通过.

1.sign的生成方式:

将传入数据按照某种规则排序,如按照字母顺序排序,然后全部转成大写,我们在做移动端校验的时候会有一个和服务器端相同的密匙,有这两个数据后将密匙添加到转换后的数据前面,然后再对数据进行MD5加密,这样就生成了一个token对象.

2.Timestamp类:

就是将当前的时间传到后台,用来验证数据是否超时,防止数据被盗取,这个是请求超时时间,防止被其他用户获取到地址并进行其他操作.

举例:想要传入如下数据:

http://192.168.239.102:8080/testvideo/getProducts?token=wdeeskfh2376428&b=123&a=entrr&token=wdeeskfh2376428&timestap=1237549754676

我们的密匙是“@#¥213345RTRDG&&”

① 先对传入数据排序:a=entrr&b=123&token=wdeeskfh2376428&timestap=1237549754676
② 对数据大写转换A=ENTRR&B=123&TIMESTAP=1237549754676&TOKEN=WDEESKFH2376428&TIMESTAP=1237549754676
③ 将密匙添加到转换成大写的字符串前方:@#¥213345RTRDG&&A=ENTRR&B=123&TOKEN=WDEESKFH2376428&TIMESTAP=1237549754676&TIMESTAP=1237549754676
④ 进行MD5加密生成sign.将sign放入json中,让后台首先对sign验证.

后台验证流程:

  1. 判断返回参数是否有token,Timestamp,sign 这些参数,如果没有直接返回错误.
  2. 判断此URL是否过期,如果过期返回错误.
  3. 把除了sign的参数进行排序并大写,然后把秘钥拼接再排序之后的请求参数之前进行MD5和传过来的sign值进行比对 如果不一致返回错误.
  4. 根据token 取出来userID,如果取不到,说明token 过期,返回数据,让用户重新登录.
  5. 如果验证通过,则表示返回的数据是安全的,继续进行下一步操作.

这篇关于前后端分离如何校验接口调用的合法性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1064986

相关文章

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

ShardingSphere之读写分离方式

《ShardingSphere之读写分离方式》:本文主要介绍ShardingSphere之读写分离方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录ShardingSphere-读写分离读写分离mysql主从集群创建 user 表主节点执行见表语句项目代码读写分

Java中的Closeable接口及常见问题

《Java中的Closeable接口及常见问题》Closeable是Java中的一个标记接口,用于表示可以被关闭的对象,它定义了一个标准的方法来释放对象占用的系统资源,下面给大家介绍Java中的Clo... 目录1. Closeable接口概述2. 主要用途3. 实现类4. 使用方法5. 实现自定义Clos

Python FastAPI实现JWT校验的完整指南

《PythonFastAPI实现JWT校验的完整指南》在现代Web开发中,构建安全的API接口是开发者必须面对的核心挑战之一,本文将深入探讨如何基于FastAPI实现JWT(JSONWebToken... 目录一、JWT认证的核心原理二、项目初始化与环境配置三、安全密码处理机制四、JWT令牌的生成与验证五、

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案

《使用@Cacheable注解Redis时Redis宕机或其他原因连不上继续调用原方法的解决方案》在SpringBoot应用中,我们经常使用​​@Cacheable​​注解来缓存数据,以提高应用的性能... 目录@Cacheable注解Redis时,Redis宕机或其他原因连不上,继续调用原方法的解决方案1