WebAPi接口安全之公钥私钥加密

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

WebAPi使用公钥私钥加密介绍和使用

随着各种设备的兴起,WebApi作为服务也越来越流行。而在无任何保护措施的情况下接口完全暴露在外面,将导致被恶意请求。最近项目的项目中由于提供给APP的接口未对接口进行时间防范导致短信接口被怒对造成一定的损失,临时的措施导致PC和app的防止措施不一样导致后来前端调用相当痛苦,选型过oauth,https,当然都被上级未通过,那就只能自己写了,就很,,ԾㅂԾ,,。下面就此次的方式做一次记录。最终的效果:传输过程中都是密文,别人拿到请求串不能更改请求参数,通过接口过期时间防止同一请求串一直被调用。
 

   第一步重写MessageProcessingHandler中的ProcessRequest和ProcessResponse


无论是APi还是Mvc请求管道都提供了我们很好的去扩展,本次说的是api,其实mvc大概意思也是差不多的。我们现在主要写出大致流程

从图中可以看出我们需要在MessageProcessingHandlder上做处理。我们继承MessageProcessingHandlder重写ProcessRequest和ProcessResponse方法,从方法名可以看出一个是针对请求值处理,一个是针对返回值处理代码如下:

 1  public class CustomerMessageProcesssingHandler : MessageProcessingHandler
 2     {
 3         protected override HttpRequestMessage ProcessRequest(HttpRequestMessage request, CancellationToken cancellationToken)
 4         {
 5             var contentType = request.Content.Headers.ContentType;
 6 
 7             if (!request.Headers.Contains("platformtype"))
 8             {
 9                 return request;
10             }
11             //根据平台编号获得对应私钥
12             string privateKey = Encoding.UTF8.GetString(Convert.FromBase64String(ConfigurationManager.AppSettings["PlatformPrivateKey_" + request.Headers.GetValues("platformtype").FirstOrDefault()]));
13             if (request.Method == HttpMethod.Post)
14             {
15                 // 读取请求body中的数据
16                 string baseContent = request.Content.ReadAsStringAsync().Result;
17                 // 获取加密的信息
18                 // 兼容 body: 加密数据  和 body: sign=加密数据
19                 baseContent = Regex.Match(baseContent, "(sign=)*(?<sign>[\\S]+)").Groups[2].Value;
20                 // 用加密对象解密数据
21                 baseContent = CommonHelper.RSADecrypt(privateKey, baseContent);
22                 // 将解密后的BODY数据 重置
23                 request.Content = new StringContent(baseContent);
24      
of_graph_get_remote_port isp { compatible = "isp"; core@0 { id = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ... 阅读详情

相关推荐

深度解析与实战:长短时记忆网络(LSTM)在股票走势预测中的应用(基于Python + PyTorch)

本文全面探讨了LSTM在股票价格预测中的应用,从理论基础到实践操作。文章首先强调了股票市场预测的重要性,并介绍了LSTM网络结构及其在处理时间序列数据中的优势。接着,详细说明了数据预处理的关键步骤,包括数据收集、清洗、特征选择和归一化。文章还讨论了LSTM模型的构建、训练和评估,并提供了Python及PyTorch的实操案例。最后,总结了LSTM在股票预测的成果,并提出了未来研究的方向,如模型优化和特征工程,旨在帮助读者掌握LSTM在股票价格预测中的应用,并探索提升模型性能的方法。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2041

asp.net mvc webapi 实用的接口加密方法示例

本篇文章主要介绍了asp.net mvc webapi 实用的接口加密方法示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

WebApi授权拦截——重写AuthorizeAttribute

webapi重写Authorize的HandleUnauthorizedRequest,让服务端返回json,并且把401改为其他状态码来避免被重定向

WebApi接口安全接口权限调用、参数防篡改防止恶意调用

背景介绍 最近使用WebApi开发一套对外接口,主要是数据的外送以及结果回传,接口没什么难度,采用WebApi+EF的架构简单创建一个模板工程,使用template生成一套WebApi接口,去掉put、delete等操作,修改一下就可以上线。这些都不在话下,反正网上一大堆教程,随便找那个step by step做下来就可以了。 然后发布上线后,接口是放在外网,面临两个问题: 如何保证接口的调用的合法性 如何保证接口及数据的安全性 其实这两个问题是相互结合的,先保证合法,然后在合法基础上保证请求...

Unknowncheats的博客 2104

加密接口如何测试?

随着互联网技术的发展,服务安全性和数据安全性变的越来越重要,提供接口服务的系统往往会应用各种加密技术,保证接口安全调用,如何应用工具来实现加密接口测试成为一项必要技能。在讲解如何用Jmeter实现接口安全性测试之前,先来了解一下常见的加密算法,测试同学可根据不同的加密算法类型和程序猿&程序猿沟通,获取所需的信息,实现加密接口的处理。 摘要算法 对明文编码生成信息摘要,以防止被篡改。比如...

Testfan_zhou的博客 4520

.NET WebApi实现RSA加密与解密,签名与验签

WebApi接口签名加密和验签业务场景需求功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 业务场景需求 现有请求方A,...

CHIZHIDA 2783

WebApi接口安全机制:API接口限流防止恶意访问 ThrottlingHandler消息处理机制

文章介绍 为了防止网站意外暴增的流量比如活动、秒杀、攻击等,导致整个系统瘫痪,在前后端接口服务处进行流量限制是非常有必要的。本篇主要介绍下Net限流框架WebApiThrottle的使用。 WebApiThrottle是一个专门为webApi限制请求频率而设计的,支持寄宿OWIN上的中间件的限制过滤。服务端接口可以基于客户端请求IP地址、客户端请求key、及请求路由去限制w...

ASP.NET 2590

RSA生成公钥私解加密码解密数据的原理理解及应用思路.

二话不说,先上一个图:   如上图所示 第一步:左边是服务器端,右边是客户端,先通过RSA算法生成两组公私钥,分别给服务器和客户端. 第二步:然后服务器端与客户端分别交互各自的公钥,各自保管好自己的私钥不要泄露. 第三步:每次要与服务端交互数据时,都先通过公钥加密,每次接收到数据之后先通过私钥解密.以保证数据的安全性.   来一段RSA生成公钥私钥,加密及解密的公共类: us...

yuanpan的专栏 1485

WebApi 如何 优雅的 对 输入输出 解密加密

WebApi 如何 优雅的 对 输入输出 解密加密 原文:WebApi 如何 优雅的 对 输入输出 解密加密 ...

weixin_30872337的博客 686

C# ASP.NET webapi 解析所有的参数BASE64加密的串

例如:加密前:http://xxxxxxxx/xxx/xxx?a=1&amp;b=2&amp;c=3  加密后http://xxxxxxxx/xxx/xxx?P=YT0xJmI9MiZjPTM= 在api创建模型类前,进行拦截,先将串解析,再根据解析的串对模型类的属性反射赋值。  public class ActionParamModelBinder : IModelBinder     { ...

正在注销账号的博客 2258

C#中.net8WebApi加密解密

尤其在公网之中,数据的安全及其的重要,除过我们使用jwt之外,还可以对传送的数据进行加密,就算别人使用抓包工具,抓到数据,一时半会儿也解密不了数据,当然,加密也影响了效率,肯定不如明文传递的效率高。此时,数据已经加密成功了。可以传递给前端进行使用了,前端拿到再进行解密。我们把刚才的字符串传递进去,然后在程序内部调试,能看得到数据。6.写一个获取到前端加密的字符串,然后进行解密。写一个GetStudent()方法,进行加密。在程序内部,看到了数据,说明解密成功。3.建立加密,解密的方法。

故里2130 1465

Web API应用架构设计分析(2)

在上篇随笔《Web API应用架构设计分析(1)》,我对Web API的各种应用架构进行了概括性的分析和设计,Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端(包括浏览器,手机和平板电脑等移动设备)的框架,本篇继续这个主题,介绍如何利用ASP.NET Web API 来设计Web API层以及相关的调用处理。 1、Web API的接口访问分类 Web API接口的...

weixin_33853794的博客 1279

Asp.Net WebAPI身份验证,授权/请求过滤,token验证,action过滤

AuthorizeAttribute过滤器执行顺序: 重写AuthorizeAttribute实现请求拦截 using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Web; using System.Web.Http; using System.Web.Http.Controllers; usin

u011511086的专栏 4588

WebAPI的AuthorizeAttribute扩展类中获取POST提交的数据

WEBAPI中,AuthorizeAttribute类重写时,如何获取post数据是个难题,网上找资料也不好使,只能自己研究,通过研究发现,WEBAPI给了我们获取POST数据的可能,下面介绍一下: //将POST数据以字符串的形式读取,例如post的json数据,就可以以这种方式读取 actionContext.Request.Content.ReadAsStringAsync(...

乐天zhifengfly的专栏 4368

ASP.NET Web API 2 之 HttpRequestMessage 对象

Ø 前言 在 Web API 中经常会使用到 HttpRequestMessage 和 HttpResponseMessage 对象,这两个对象封装了对 Web API 的请求和响应,位于 System.Net.Http.dll 程序集的 System.Net.Http 命名空间中。它们是 Web API 处理请求和响应消息的两个重要对象,也是与程序员打交道最直接的两个对象。本文主要讨论以下几点...

weixin_30484247的博客 1019

阿里天池大赛-基于python的人工智能辅助糖尿病遗传风险预测算法源码+说明(前三).zip

标题:基于Python的人工智能辅助糖尿病遗传风险预测算法源码本资源是一份珍贵的学习资料,包含了阿里天池大赛中关于“基于Python的人工智能辅助糖尿病遗传风险预测”项目的前三名算法源码及详细说明。这些代码和文档展示了如何利用Python语言,结合先进的机器学习技术,对糖尿病的遗传风险进行精准预测。通过深入分析患者的遗传信息、生活习惯等多维度数据,该算法能够有效识别出高风险个体,为早期预防和干预提供科学依据。这份资源不仅提供了完整的源代码,还附带了详细的算法说明,帮助学习者理解模型构建、数据处理、特征选择等关键步骤。无论是对于希望深入了解糖尿病遗传风险预测的研究人员,还是对机器学习在医疗健康领域应用感兴趣的开发者,这份资源都是不可多得的学习材料。请注意,本资源仅供学习交流使用,严禁用于任何商业用途。

上一篇: 网络安全漏洞原理利用与渗透
下一篇: 常见六大Web安全攻防解析
L世界凌乱了
博客等级 码龄3年 3590粉丝 118原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值