C#请求JavaAPI接口安全校验流程【线下系统定制】(精简版)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 我始终相信,分享的越多收获的就越多!所以这里把我最近几天钻研的项目安全校验机制流程实现与细节分享给大家!

利用RSA加密算法,MD5加密算法,签名认证机制,Token校验机制,时间戳失效机制

加密解密流程


演变一


  1. C# 利用RSA加密算法对账号密码进行加密,POST请求到Java后端,(加密算法的参数是用公钥进行加密的)
  2. Java后端接收之后先把接收的数据处理一下(坑)(前后端传输的时候存在转义字符,转义字符是自动变成空格,我接触到的是+号,还有很多比如 (  [   {  /  ^  -  $   ¦  }  ]  )   ?  *  +    . )
  3. 字符串转换之后,再利用RSA解密算法(解密算法的参数是用私钥进行解密的)
  4. 解密之后剩下的就是常规操作了


演变二


问题来了: 难道是什么时候都可以请求 后端服务接口吗,总有一天会被黑客破解掉 然后干倒我们的!

  1. 时间戳校验失效机制上场了。
  2. 通过获取(后端)当前时间戳函数——前端传过去的时间戳函数=失效时间
  3. 我这里的失效时间是5秒中,5秒钟不发生响应我就认为失效了,你必须重新请求

System.currentTimeMillis() - time > 1 * 50 * 1000


演变三


兜兜转转,我们好像遗留了最初的问题!接口身份! 为什么可以访问?

  1. Token身份验证出来了。为什么要把Token放在这里输出呢,因为我这是CS端的Token,意思也就是说,Token的用处是 验证登录之后的请求是否被后端允许,而不是第一次。
  2. 这里是一大堆验证成功之后,我会把Token放在json里发给前端。然后以供前端下次请求应用

String jsonConcat=JsonUnit.JSONMain(1, UUID.randomUUID().toString(),merchant,1);


演变四


最后一步,也是这里的大结局了!签名机制,验证以上信息是否被篡改

  1. 我的操作流程就是通过客户端对账号密码和盐一系列的MD5加密,因为MD5是不可逆的,所以利用MD5来进行签名验证是最合适不过了。
  2. 客户端请求API发送的签名参数{e3e7a8a0c40f3629e87072ae237e3acd},到底和谁比较呢?
  3. 前端传递的账号,密码用公钥RSA加密过后的密文,后端通过私钥进行RSA解密,解密之后再进行账号密码盐的拼接进行MD5进行加密
  4. 到了这一步估计大家都懂了。也就是后端RSA解密的信息重新加密和前端的签名数据进行比较!


数据接收处理


  1. 创建一个接收Json包基类(这个基类一定要是泛型)
  2. 在基类中要有一个泛型的对象用于随时随地扩展接收的各种数据
  3. 接收过来之后要用JsonConvert.DeserializeObject(json字符串) 变换成对象处理使用
  4. 最后一步就是实体列表转换格式放入C#的显示UI界面

这个项目设计到跨国业务,收费项目,无法公布太多,抱歉!


image.png

总结


如果以上信息听的有点糊里糊涂的,可以学习一下我之前整理的HTTPS底层原理!完美的解释了浏览器的所有的访问流程以及原理!


相关文章
|
18天前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
30天前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
43 5
|
3月前
|
存储 JSON API
HTTP 请求与响应处理:C#中的实践
【10月更文挑战第4天】在现代Web开发中,HTTP协议至关重要,无论构建Web应用还是API开发,都需要熟练掌握HTTP请求与响应处理。本文从C#角度出发,介绍HTTP基础知识,包括请求与响应结构,并通过`HttpClient`库演示如何发送GET请求及处理响应,同时分析常见错误并提供解决方案,助你更高效地完成HTTP相关任务。
142 2
|
3月前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
93 2
|
3月前
|
C#
C# 接口(Interface)
接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分。 接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。 接口使得实现接口的类或结构在形式上保持一致。 抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。 接口本身并不实现任何功能,它只是和声明实现该接口的对象订立一个必须实现哪些行为的契约。 抽象类不能直接实例化,但允许派生出具体的,具有实际功能的类。
57 9
|
3月前
|
存储 分布式计算 监控
C# 创建一个分布式文件存储系统需要怎么设计??
C# 创建一个分布式文件存储系统需要怎么设计??
53 0
|
3月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
748 0
|
4月前
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
152 5
|
6月前
|
存储 Oracle 关系型数据库
PACS源码,C#语言数字医学影像系统成品源码
**数字医学影像系统(RIS/PACS)**采用C#开发,基于C/S架构,配Oracle数据库,具备自主版权,适用于项目实施。系统包含分诊、超声、放射、内镜、病理等工作站,支持基本信息维护、报表查询和系统维护。功能亮点有:WorkList管理、影像采集传输、存储检索、图像处理、多序列浏览、流程控制、报告录入与审核、支持多种影像设备及高级影像处理。RIS与PACS数据库同步,并集成HIS、电子病历等系统接口。全面遵循DICOM3.0标准。
105 1
PACS源码,C#语言数字医学影像系统成品源码
|
5月前
|
API C# 数据库
SemanticKernel/C#:实现接口,接入本地嵌入模型
SemanticKernel/C#:实现接口,接入本地嵌入模型
99 1