API接口开发有没有必要把所有请求都进行签名?(问题与jfinal无关)

在接口设计中,腾讯,淘宝等,在用secretKey对所有的参数(参数需要排序)进行签名,确保参数不被篡改。

这样有必要吗?比如我只对时间戳,随机数,签名。这样不是也能达到无法篡改参数的目的吗?


换句话说,如果我的请求参数的json中,是嵌套类型的,post请求,此时再去对所有参数签名,对服务器跟客户端的开发来说,都增加了难度,非常容易出错。

比如下面这种json,加所有参数签名,不是非常麻烦吗?

{
    "timestamp": "2019-08-28 16:39:00",
    "nonce": "12345678912",
    "appKey": "testappkey",
    "sign": "tes"
    "param": {
        "testa": "1",
        "code": "123"
    }
}


评论区

JFinal

2019-08-28 17:19

大厂开放 API 时要考虑没有用上 https 通道的用户,所以一开始就提供了签名验证机制

有了签名机制无论在 https 还是 http 通道内都是安全的(当然,没有绝对的安全)

签名机制不要考虑是不是麻烦,而是要考虑是否有必要

xiuj

2019-08-29 00:56

加到header去。

hb963724769

2019-08-29 08:45

@xiuj 问一下,参数放在header跟body中有什么区别啊

hb963724769

2019-08-29 08:45

@JFinal 谢谢波总解答。

xiuj

2019-08-29 09:21

@hb963724769 区别不大,放到头部好维护好跟踪。

hb963724769

2019-08-29 09:57

lyh061619

2019-08-29 18:30

这个问题是可,视情况而已,如果数据格式比较复杂的做精简,因为签名有会两头签名失败的排查很麻烦,像我就遇到了一个问题,传输数据结构较复杂两端签名生成不一致,最后排查不出为只能把将大概参数串的复杂的参数排除,如果不排查很难知道是那个参数出现错误,传过来有几个Json集合串在一起。

hb963724769

2019-08-31 08:58

@lyh061619 确实是这样,我才在这里提问的。参数结构复杂,数据量大时候非常容易出错,不安规则走的话,会变成每个接口加密规则都不一样,也挺麻烦的。用oauth2.0,我们做平台接口,不是所有客户都有账号

热门反馈

扫码入社