加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 编程开发 > asp.Net > 正文

.NET API 接口数据传输加密最佳实践记录

发布时间:2023-02-17 10:11:41 所属栏目:asp.Net 来源:互联网
导读:我们在做 Api 接口时,相信一定会有接触到要给传输的请求 body 的内容进行加密传输。其目的就是为了防止一些敏感的内容直接被 UI 层查看或篡改。 其实粗略一想就能想到很多种方案,但是哪些方案是目前最适合我们项目的呢? 硬编码方式 最先想到的应该就是硬

      }
  }
  这里我做了一个方便我自己的拓展功能,就是显示打了 IApiEncrypt 接口标签的才会正常进行解析绑定。
 
  剩下的就是在 ConfigureService 中添加进去即可:

  services.AddControllers(options => {
      ...
      options.ModelBinderProviders.Insert(0, new SecurityTransportModelBinderProvider());
  })
  这样实现过后,我们就能像使用 FromBody 那样就能按需调用即可:

  [HttpPost("security")]
  public async Task<ResultDto> DemoDecrypt([ModelBinder(typeof(SecurityTransportModelBinder))] OriginBusinessRequest request)
  {
      //激活结果
      ...
      return await Task.FromResult(WriteSafeData(data, publicKey));
  }
  如果是默认处理加解密也是可以的,直接在对应的请求实体类打上 IApiEncrypt 标签就会自动执行模型绑定

  public class UserUpdateRequest: IApiEncrypt {
      public int UserId { get; set; }
      public string Phone { get; set; }
      public string Address { get; set; }
      ...
  }
  这种方案其实也还是有缺点的,从刚刚的使用来看就知道,模型绑定无法解决返回自动加密处理。所以我们不得不在每个接口处写下如 WriteSafeData(data, publicKey) 这种显式加密的代码。
 
  优化的方式也很简单,其实我们可以通过过滤器可以解决,这也是为什么我要加 IApiEncrypt 的原因,因为有了这个就能确定知道这是一个安全传输的请求,进而进行特殊处理。
 

(编辑:莱芜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读