当前位置: 首页 > wzjs >正文

做飞象金服的网站临汾网站开发

做飞象金服的网站,临汾网站开发,电子商务网站开发语言占比,网络营销环境背景说明 我们组负责维护的一个系统,前端界面挂载在其他两个系统上,因为历史遗留原因,同时也挂在公网上,没有登陆功能和用户体系,只要输入网址就能访问,虽然这个系统是给公司内部人员使用,但是…

背景说明

我们组负责维护的一个系统,前端界面挂载在其他两个系统上,因为历史遗留原因,同时也挂在公网上,没有登陆功能和用户体系,只要输入网址就能访问,虽然这个系统是给公司内部人员使用,但是存在被恶意登陆并修改用户数据的风险;

解决思想

这个问题显然是权限校验的问题;系统配置拦截器或者过滤器,对其他系统发送的请求进行拦截、设计的方案是先校验参数完不完整、再校验token在不在有效期内,最后校验token是否正确;这三个环节哪个环节没有校验成功,不允许访问;

因为我们的系统是用于公司其他系统使用,这里以系统A为例代表其他系统;我们系统和系统A都要在程序中保存一个密钥,系统A每次访问我们系统前,会先根据userId和当前时间戳timestamp根据SHA-256算法生成token,最后将userId、timestamp和token参数传输到我们系统,我们系统进行权限校验;

程序流程

public class ApiSignatureInterceptor implements HandlerInterceptor {private static final long MAX_TIME_DIFF = TimeUnit.MINUTES.toMillis(5);@Value("${custom.interceptor.enabled:false}")private boolean enableInterceptor;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if (this.enableInterceptor){String userId = request.getHeader("userId");String userName = request.getHeader("userName");String timestamp = request.getHeader("timestamp");String signature = request.getHeader("signature");//1.先验证数据都存不存在if (userId == null || timestamp == null || signature == null) {sendErr(response,"参数不全");log.error("参数不全");return false;}//boolean isAccess = SignatureUtils.verifySignature()//2.验证签名是否过期long currentTime = System.currentTimeMillis();long timeDiff = currentTime - Long.parseLong(timestamp);if (timeDiff > MAX_TIME_DIFF) {sendErr(response,"签名过期,请重新发送");return false;}//3.验证token的有效性boolean isAccess = SignatureUtils.verifySignature(buildSignData(userId,timestamp), signature);if (!isAccess) {sendErr(response,"签名校验不通过");return false;}return true;}else {return true;}}/**** 生成签名的原始数据* @param userId* @param timestamp* @return*/private static String buildSignData(String userId,String timestamp){return String.format("userId=%s&timestamp=%s",userId,timestamp);}public static void sendErr(HttpServletResponse response,String msg) throws Exception {ResultResponse<Object> error = ResultResponseUtil.error(StatusEnum.FORBIDDEN, msg);response.setContentType("application/json;charset=utf-8");String errJson = JSON.toJSONString(error);response.getWriter().write(errJson);}
}
    public static String generateSignatureUtils(String data){try{//签名实例Mac sha256HMAC = Mac.getInstance(HMAC_SHA256);SecretKeySpec spec = new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), HMAC_SHA256);sha256HMAC.init(spec);byte[] hashBytes = sha256HMAC.doFinal(data.getBytes(StandardCharsets.UTF_8));return Base64.getEncoder().encodeToString(hashBytes);}catch (Exception e){log.error("签名生成失败" + e.getMessage());throw new BusinessException("签名生成失败");}
http://www.dtcms.com/wzjs/577009.html

相关文章:

  • wordpress authentication key关键词自助优化
  • 廊坊建站软件建筑工人找活正规平台
  • 在哪个网站做流程图比较好看怎样建设一个网站教学设计
  • 建设网站利用点击量赚钱网站建设如何缴纳印花税
  • 怎么用网站模板百度爱采购推广平台
  • 网站建设教程视频教程个人免费网站注册
  • 专业的深圳网站建设公司哪家好响应式网站切图
  • 湖北省建设信息港网站wordpress登陆地址修改
  • 网站首页详细设计网站建设开票
  • 网站目录环保设备网站建设模板
  • 做运营常用的网站百度seo点击软件
  • html是建网站导航栏怎么做专门查企业的网站
  • 用jsp做学校网站久久文化传媒有限公司在哪里
  • 网站开发考什么证在百度怎么建立自己的网站
  • 网站二级域名设置如何做网站的源码
  • 雅安市建设工程招投标网站钦州公司做网站
  • 网站开发的软件支持建立网站平台需要那些技术
  • 蓝科企业网站系统做网站的流程
  • asp网站首页各大网站收录
  • 企业网站建设可行分析手机论坛app
  • 免费做网站推广久久建筑网下载
  • 做网站用花生壳哪个版本深圳电子商务网站有哪些
  • 建站素材图片欧派整装大家居装修公司加盟
  • iis6 建设网站浏览上海房价即将暴跌
  • 个人网站 怎么备案东莞智通人才网招聘信息
  • 网站建设公司的公司排名最版网站建设案例
  • 郑州建站多少钱申请域名流程后怎样做网站
  • 重庆网站平台建设开发网站手机版
  • 珞珈学子网站建设北京做网站的公司商集客电话
  • 自己建一个网站需要什么事业圈app哪家公司开发的