微信支付接口加密技术详解

登录不加密

明文 用户名+密码登录。

1、问题:用户密码等隐私泄露

解决:隐私信息加密

方案:RSA非对称加密:客户端用公钥对密码加密;服务器用私钥解密

 

2、问题:请求参数金额额被篡改

解决:MD5加密

方案:客户端将用户名和金额拼一个字符串然后用MD5加密生成字符串s1传给服务器;服务器用也将用户名和金额拼一个字符串生成加密后的字符串s2,判断前端s1是否等于s2,不想等说明被篡改。

 

3、问题:MD5可以暴力正向推算然后撞库

解决:再给MD5加盐

方案:客户端将用户名和金额和固定字符串盐值“aaa”拼一个字符串然后用MD5加密生成字符串s1传给服务器;服务器用也将用户名和金额和固定字符串盐值“aaa”拼一个字符串生成加密后的字符串s2,判断前端s1是否等于s2,不想等说明被篡改。

 

 

4、问题:黑客拦截了url路径和SESSIONID等所有请求信息,模拟重复发请求,重复支付

解决:SESSIONID改为SESSIONID+TOKEN。不可控制,TOKEN程序可以控制。token里面包含时间戳设置超时时间甚至一次失效

 

方案:

1、用户名+密码+时间戳 ,然后md5生成token。

2、将token放到redis设置超时时间(ex)

3、将token用RSA公钥加密返给客户端

4、客户端支付时将token传给服务器支付接口,我们在支付做个拦截,即拦截器

5、拦截器RSA解密token,然后做token的有效性校验,比如token在redis是否存在。

6、如果需要更高的安全性,token用一次失效,那就校验完将token从redis删除即可。

 

 

 

拦截器前置判断token有效性

 

 

 

 

 

 

 

 

 

posted on   小石头小祖宗  阅读(34)  评论(0编辑  收藏  举报  

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示