ToB企服应用市场:ToB评测及商务社交产业平台

标题: HTTP接口安全 [打印本页]

作者: 立山    时间: 2022-8-9 17:50
标题: HTTP接口安全
HTTP Header 增加字段
  1. @ResponseBody
  2.     public OfflineQRCodeResp OfflineQRCode(@RequestHeader("Authorization") String token,@RequestHeader("nonce") String nonce,
  3.                     @RequestHeader("timestamp") String timestamp,
  4.                     @RequestHeader("signature") String signature,
  5.                     @RequestBody OfflineQRCodeReq in){
  6.             GlobalVars.IncreaseApiCallCount();
  7.             OfflineQRCodeResp resp = new OfflineQRCodeResp();
  8.             //--------------------- 验证签名 ----------------------
  9.             VerifySignatureReturn verifySignatureReturn = nonceService.verifySignature(nonce, timestamp,  in.toString(), signature);
  10.                 if (!verifySignatureReturn.isbSuccess()) {
  11.                         resp.setCode(201);
  12.                     resp.setMessage("签名验证失败," + verifySignatureReturn.getMessage());       
  13.                     resp.setTimestamp(in.getTimestamp());
  14.                     return resp;
  15.                 }
  16.                
复制代码
验证签名
  1. @Override
  2.         public VerifySignatureReturn verifySignature(String nonce, String timestamp, String requestParams, String strClientSignValue) {
  3.                 VerifySignatureReturn verifySignatureReturn = new VerifySignatureReturn();
  4.                 boolean ret = false;
  5.                 if (safe_enable == 0) {
  6.                         verifySignatureReturn.setbSuccess(true);
  7.                         return verifySignatureReturn;
  8.                 }
  9.                
  10.                 // ------------- 时间戳 过期时间验证 --------------------
  11.                 long lngTimeStamp = Long.parseLong(timestamp);
  12.                 long lngCurTimeStamp = (new Date()).getTime();
  13.                 long lngOffset = 0;
  14.                
  15.                 lngOffset = Math.abs(lngCurTimeStamp - lngTimeStamp);
  16.                 if (lngOffset > 1000 * safe_expire) {
  17.                         verifySignatureReturn.setbSuccess(false);
  18.                        
  19.                         SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
  20.                         String strTimeString = sdf.format(new Date(Long.parseLong(String.valueOf(lngTimeStamp))));  
  21.                         verifySignatureReturn.setMessage("时间戳过期,差值=" + lngOffset + ",时间戳时间: " + strTimeString);
  22.                         return verifySignatureReturn;
  23.                 }
  24.                
  25.                 // ---------------- 随机数 验证 ---------------------
  26.                 if (safe_nonce == 1) {
  27.                         String cacheNonceString = cacheService.get(nonce);
  28.                         if (cacheNonceString == null) {
  29.                                 cacheService.put(nonce);
  30.                         }else {
  31.                                 verifySignatureReturn.setbSuccess(false);
  32.                                 verifySignatureReturn.setMessage("随机数失效");
  33.                                 return verifySignatureReturn;
  34.                         }
  35.                 }
  36.                
  37.                 // ---------------- 签名验证 ------------------------
  38.                 String strSignValue = SignatureUitl.getSignature(nonce, timestamp, requestParams);
  39.                 if (strClientSignValue.equalsIgnoreCase(strSignValue) == false) {
  40.                         logger.info("签名验证失败,正确的签名: " + strSignValue);
  41.                         verifySignatureReturn.setbSuccess(false);
  42.                         verifySignatureReturn.setMessage("signature invalid.");
  43.                         return verifySignatureReturn;
  44.                 }
  45.                
  46.                 verifySignatureReturn.setbSuccess(true);
  47.                 return verifySignatureReturn;
  48.         }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4