前言
元宵佳节
支付类app为了安全起见,除了使用【防代理分析请求数据】,还可采用签名的方式进一步进行限制防止请求和返回报文被修改。
iOS请求安全防护【1、 防代理分析请求数据 2、SSL证书认证3、采用签名禁止修改报文4、不在本地缓存网络请求报文5、利用NSURLProtocol 拦截请求修改HTTPHeaderField】文章地址:https://blog.csdn.net/z929118967/article/details/102511852
- 应用场景:防止请求参数被恶意修改
在对接第三方支付的时候,第三方会要求参数按照ASCII码从小到大排序。
- 原文
https://blog.csdn.net/z929118967/article/details/108195721
- 参数
NSDictionary *params = @{@"sid" : @"iOS逆向",
@"certificateInfoList" : @"https://kunnan.blog.csdn.net/article/details/108195721" ,
@"storePicsList" : @"https://kunnan.blog.csdn.net" ,
};
- 效果
2021-02-26 15:43:42.208991 0800 SignatureGenerator[16231:1928569] 按照参数名ASCII码从小到大排序:《certificateInfoList=https://kunnan.blog.csdn.net/article/details/108195721&sid=iOS逆向&storePicsList=https://kunnan.blog.csdn.net》
2021-02-26 15:43:42.209280 0800 SignatureGenerator[16231:1928569] sign:195b9caecc41681ebd1b74261f858052
I、实现步骤
1.1 签名模式的前奏:按照参数名ASCII码从小到大排序并拼接
[递归的方式进行实现]
设所有发送或者接收到的数据为集合M,将集合M内的参数和参数值按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
代码语言:javascript复制isPreAuth=false&isWipeZero=true&needTrade=falsetotalAmount=22
- 处理key对应的Value是字典的情况