关于接口的安全性设计

    大家都知道,访问一个接口的时候,如果你不做过滤,很容易出问题,比如有人会模拟请求篡改数据,这样就很不安全,因此就要设计一个安全的接口访问方式。

    我的想法是在访问接口带上一个访问的令牌即token,这个token的生成可以根据用户Id生成一个字符串,存放在服务器缓存里面,以后每次访问都带上token,光用token还是不够的,还要带上一个签名,这个签名可以借助微信支付里面的方法,生成签名。

    生成签名包括四个部分,时间戳,随机数,用户ID,签名参数,首先拼接签名参数,然后按照字符串字符按升序排序,然后使用MD5加密,最后转成大写的16进制,这样就生成了一个签名。

    发起请求的时候,请求头里面带有时间戳,随机数,用户ID和刚才上一步得到的签名,根据时间戳判断请求是否失效,根据用户ID可以判断token是否失效,根据请求参数,服务端按照同样的规则计算签名,判断是否与传过来的签名是否一致,如果相同的话就是合法请求,如果不同则可能被篡改,禁止访问数据,返回错误信息。

    但是这样其实还是有问题的,就是生成token的时候,因为这个方法是开放的,别人也可以根据用户ID得到token,如果是这样,他也可以用得到的token模拟请求。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值