.NET API 接口数据传输加密最佳实践( 四 )


统一入口适合制定了一种接口规范,所有加密的请求都走这一个接口 。然后通过路由解析调度到不同的控制器 。其实我讲了我司在 .NET Framework 下采取的一种方案,好处时实现简单,做到了代码复用,对业务代码进行了解耦 。但缺点是用了反射成为了性能消耗点,并且当业务越来越多就会产生代码爆炸,成为了维护灾难 。
而中间件或 IHttpModule 方式就很好的解决这了这点 。但同样也不是使用所有场景,如对新增的不需要加密的接口要进行过滤处理等 。
最后介绍了模型绑定这种方式,技能很方便的满足大多数场景,也满足个别列外的需求 。但同样也有缺点,就是无法针对接口响应体进行自动加密处理,所谓好事做到底,送佛送到西,这事只能算是做到一半吧 。
其实我还想到了一种类似 Aop 的方案,那就是实现一个路由过滤器的功能,当请求进来,通过路由处理程序对请求体进行解密,然后重写请求流 。然后调度到对应的原始路由,最后在响应的时候再加密重写一次 。不过查阅了一番资料,并没有收获 。
参考资料

  • https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.modelbinding.imodelbinderprovider?view=aspnetcore-7.0
  • https://learn.microsoft.com/en-us/aspnet/core/fundamentals/middleware/write?view=aspnetcore-6.0
  • https://www.stevejgordon.co.uk/html-encode-string-aspnet-core-model-binding

经验总结扩展阅读