当前位置: 首页 > news >正文

网站开发设计的阶段wordpress手动更新视频教程

网站开发设计的阶段,wordpress手动更新视频教程,企业网络搭建案例,jsp企业网站文章目录 为什么是用中间件而不是筛选器#xff1f;代码实现技术要点context.Request.EnableBuffering()指针问题 小结 为什么是用中间件而不是筛选器#xff1f; 为什么要用中间件验签#xff0c;而不是筛选器去验签? 1、根据上图我们可以看到#xff0c;中间件在筛选器之… 文章目录 为什么是用中间件而不是筛选器代码实现技术要点context.Request.EnableBuffering()指针问题 小结 为什么是用中间件而不是筛选器 为什么要用中间件验签而不是筛选器去验签? 1、根据上图我们可以看到中间件在筛选器之前而筛选往下就是我们写业务逻辑代码的控制器了。这就大大增加了我们被攻击的风险。 2、用筛选器我们需要在每个控制器上都添加相应的标识如果需要校验的sign的控制器多的话就增加了很多不必要的工作量和风险如果某个控制器一时疏忽忘记加筛选器的话就有可能会被攻击。 筛选器一般都是当数据得到信任的时候做验证例如用户登录了做功能的权限判定中间件判定非信任数据 代码实现 /// summary/// 验签中间件/// /summarypublic class SignatureMiddleware{ /// summary/// 用户服务/// /summarypublic UserService _userService { get; set; }private readonly RequestDelegate _next;/// summary/// 构造函数/// /summary/// param namenext上下文/param/// param nameuserService用户服务注入/parampublic SignatureMiddleware(RequestDelegate next, UserService userService){_next next;_userService userService;}/// summary/// 管道委托/// /summary/// param namecontext请求/param/// returns/returnspublic async Task Invoke(HttpContext context){if (context.Request.Path.Value.StartsWith(/api/Order)){// 验证签名var isValidSignature await ValidateSignatureAsync(context);if (isValidSignature.Item1){await _next(context);}else{context.Response.StatusCode 403;await context.Response.WriteAsJsonAsync(AlwaysResult.Error(isValidSignature.Item2));}}else{await _next(context);}}private async Task(bool, string) ValidateSignatureAsync(HttpContext context){context.Request.EnableBuffering();//倒带string Postbody string.Empty;string sign context.Request.Headers[GlobalContext.SystemConfig.OpenApiSettings.SignName].ParseToString();string timestamp context.Request.Headers[GlobalContext.SystemConfig.OpenApiSettings.Timestamp].ParseToString();string appkey context.Request.Headers[GlobalContext.SystemConfig.OpenApiSettings.Appkey].ParseToString();//先根据Appkey查询这个账户的状态UserExtend user await _userService.GetForm(appkey);if (user ! null){context.Request.Body.Position 0;var readResult await context.Request.BodyReader.ReadAsync();context.Request.BodyReader.AdvanceTo(readResult.Buffer.Start, readResult.Buffer.End);Postbody Encoding.UTF8.GetString(readResult.Buffer.FirstSpan);string checksign DESEncrypt.MD5(appkey timestamp Postbody user.F_Account appkey).ToLower();if (!checksign.Equals(sign)){return (false, 验签失败!);}else{context.Request.Body.Position 0;//指针回拨return (true, );}}else{return (false, 非法签名);}}}技术要点 context.Request.EnableBuffering() ValidateSignatureAsync 方法为验证签名方法方法内第一行中的context.Request.EnableBuffering();的作用是允许http请求中的body重复读取如果不加这个方法当数据在验签过程中读取出来之后到了控制器时控制器中获取到的body就会是空值 指针问题 context.Request.Body.Position 代码中用到了两次第一次使用的时候是将指针指向body的第一位。当读取出数据之后指针会由第一位移动到最后一位因此我们在读取完验签完成之后需要把指针从最后以为拨回到第一位。如果没有验签通过也就没有那个必要了。 小结 在学习过程中我们不仅要知其然还要知其所以然。 中间件用于过滤非信任数据 过滤器用于判定受信任的安全的数据
http://www.hkea.cn/news/14461455/

相关文章:

  • wordpress创建表格站外seo是什么
  • 跨境电子商务网页制作与网站建设什么网站可以接单做
  • 网站不显示域名解析错误怎么办百度建网站
  • 如何在百度做自己公司的网站电子商务网站应该如何建设
  • 网站数据库到期沈阳网站制作的公司哪家好
  • 济南网站建设小程序开发网店美工岗位职责
  • 网站开发要学的课程如何实现企业网站推广的系统性
  • 上海 松江 网站制作秦皇岛网络编辑网站
  • 百度营销-网站分析培训上海企业网站推广方法
  • 织梦行业网站模板wordpress首页字符
  • 在家做兼职的正规网站平台宇舶手表网站
  • 网站模版怎样使用织梦网站首页标签
  • 顺的做网站便宜吗我要买房网
  • 壹像素网站扁平化企业网源码win8风格精简化源码asp带后台企业网站
  • 平邑建设银行网站黄石论坛
  • 佛山白坭网站建设wordpress 接入外网慢
  • 网站产品设计规范 模板公益网站建设那家好
  • 网站维护常见问题移动网站优化
  • 沈阳网站建设公司哪个好昆山广告设计公司
  • 深圳有效网站制作哪家公司好网络推广员工作好做吗
  • 用旧手机做网站展厅设计手绘图
  • fullpage wow做的网站装修设计用什么软件好用
  • 在建设部网站上的举报网页制作公司 大连
  • 学校校园网站建设必要性长春火车站官网
  • 福州外贸建站wordpress 搬家到本地
  • 百度做网站续费费用轻量应用服务器wordpress
  • 企业网站模板建立流程山东进一步优化
  • 怎么在网站上做下载5118网站如何使用免费版
  • 怎么在百度上做自己的网站苏州建站公司哪个好
  • joomla 网站图标ftp制作网站