跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • gin 对于请求参数解密处理的优雅实现
未分類
25 3 月 2021

gin 对于请求参数解密处理的优雅实现

gin 对于请求参数解密处理的优雅实现

資深大佬 : iqingqian 10

本人要使用 gin 框架写 API 供安卓端调用,迫于安全,客户端会使用 AES 对每个字段进行加密传输,那么服务端这边有没有办法用中间件统一解密,不影响业务使用 ctx.PostForm("xxx")获取字段解密后的值? 或者有没有其他更优雅的实现?

大佬有話說 (17)

  • 資深大佬 : demobin

    在 gateway 做

  • 資深大佬 : keepeye

    啥优雅不优雅的,自己写个方法间接调用 ctx.PostForm 并解密

  • 資深大佬 : kiripeng

    一种就是直接用中间件函数把 body 里的 json 每个字段遍历后解密丢回去 body 就行了,然后 用 shouldbind 。
    另一种就是把 shouldbind 和解密的反射函数给封装起来就行了,这样结构体的就得到的是解密后的,当然你要考虑实现的话支持切片的问题就行了把。

  • 資深大佬 : hxndg

    讲道理,这个是不是应该在别的层做?
    直接 TLS 加密一次?

  • 主 資深大佬 : iqingqian

    @kiripeng 感谢,第一种方式,遍历解密后怎么丢回 body,有支持的方法吗?

  • 資深大佬 : kiripeng

    @iqingqian
    if c.Request.Body != nil {
    bodyBytes, _ = ioutil.ReadAll(c.Request.Body)
    }
    //解密
    // 复用
    c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))

  • 資深大佬 : xkeyideal

    单纯从技术上来说,这种加密方式,还不如设计一种私有的数据传输协议,统一使用 body 传参,不用考虑参数是 query, form, body 了。
    对于现有的加密方式,即使用中间件来做也会导致后期代码维护性的问题,因为 API 有很多,每个 API 的传参都不一样,难道为每个 API 或每类 API 或特定需要加密的字段写一个中间件?后续需求变动,导致某 API 不能再归为此类又需要改。

  • 資深大佬 : MidGap

    gin 每个路由的 handle 可以填多个的,gin.GET(“/xxx”,handel1,handle2) handle1 就是解密的方法 或者 前面搞个 gin.Use(handle1),但是这样就所有的接口都要解密了,前种方法可以在需要的地方解密,当然第二种方法也能搞个白名单不解密

  • 主 資深大佬 : iqingqian

    @kiripeng 感谢

  • 資深大佬 : writesome6

    这样?

    “`golang

    gin.New().Use(func(c *gin.Context) {
    c.Request.ParseForm()
    encrypetData := c.Request.PostForm.Get(“encrypetData”)
    c.Request.PostForm = Decrypet(encrypetData)
    c.Next()
    })
    “`

  • 資深大佬 : lewinlan

    gin 自己的中间件设计还不够优雅吗?

  • 資深大佬 : ratazzi

    好好的 TLS 为啥不用

  • 資深大佬 : asAnotherJack

    middleware ?

  • 資深大佬 : Jirajine

    直接 tls 不就行了,为啥要自己再加密?怕 mitm 的话配上 mtls 和 ssl pinning 。

  • 資深大佬 : FucUrFrd

    不要每个字段加密,对 json body 加密

  • 資深大佬 : qoras

    直接 TLS 就行了啊, 怕爬就加个参数 normalize, 不符合的直接在 nginx 层 ban 掉

  • 資深大佬 : liyaojian

    @qoras #16 normalize 什么意思?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具