1,案例
1 分钱买带电脑。购买电脑,在调用支付接口之前,利用类似Fiddler等抓包工具,定位到支付接口,将参数(金额)修改为0.01元。结果是:电脑购买成功,一个月之后成功入狱。
2,怎么避免让别人用抓包工具修改参数呢?
基于token 方式隐藏参数。
3,代码实现
@RestController public class PayController extends BaseApiService { @Autowired private BaseRedisService baseRedisService; private static long timeToken = 15 * 60l; @RequestMapping("/pay") public ResponseBase pay(String token) { // 获取提交参数 数据库保存., if (StringUtils.isEmpty(token)) { return setResultError("token 不能为空!"); } String reuslt = (String) baseRedisService.getString(token); if (StringUtils.isEmpty(reuslt)) { return setResultError("参数不能空!"); } System.out.println("获取提交的参数reuslt:" + reuslt); return setResultSuccess("获取提交的参数reuslt:" + reuslt); } @RequestMapping("/getToken") public String pay(Long userId, Long money) { String payToken = UUID.randomUUID().toString(); baseRedisService.setString(payToken, userId + "-" + money, timeToken); return payToken; } }