ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 企业开发 >> 防止跨站脚本攻击--不同的系统之间为了访问安全可以验证key,和sign

防止跨站脚本攻击--不同的系统之间为了访问安全可以验证key,和sign(1/5)

来源:网络整理     时间:2018-10-17     关键词:

本篇文章主要介绍了" 防止跨站脚本攻击--不同的系统之间为了访问安全可以验证key,和sign",主要涉及到方面的内容,对于企业开发感兴趣的同学可以参考一下: key和sign的校验可以采用类似日志的切面方式(一个切点可以织入多种通知,例如即织入日志通知,又织入key校验通知)切面基本思路是定义切点(截点),在切点(截...

key和sign的校验可以采用类似日志的切面方式(一个切点可以织入多种通知,例如即织入日志通知,又织入key校验通知)

切面基本思路是定义切点(截点),在切点(截点)处织入通知(前置通知,环绕通知,后置通知)

请求系统在业务数据之后加上key,sign,到达目标系统之后,目标系统用切面拦截(前置通知),校验key(和本地存的是否一致)和sign(加密方式,参数是否一致),通过之后remove掉key,sign留下业务数据(参数操作基于对象引用

,所以后传有效)自动从截点方法继续执行,不通过抛异常(环绕通知需要在通知处手动调用截点方法)

前置通知://不需要手动调用截点,自动运行

截点:

    /**

     * 所有controller

     */

    @Pointcut("execution(* com.houbank.bank.*.controller..*.*(..))")

    private void allController() {

    }

通知

  @Before(value = "allController()" +

            "&&!callbackController()" +

            "&&!taskController()" +

            "&&!webController()" +

            "&&!baseController()" + 

            "&&!nosignController()")

    public void req(JoinPoint joinPoint) throws Throwable {

    if(joinPoint.getArgs().length > 0){

    Object jsonObject = (Object) joinPoint.getArgs()[0];

            Map bodyMap = MapUtil.beansToMap(jsonObject);

            String key = (String) bodyMap.get("key");

            String sign = (String) bodyMap.get("sign");

            if (StringUtils.isBlank(key) || StringUtils.isBlank(sign)) {

                throw new ParamException("请检查参数key,sign");

            }

            String secret = null;

            String[] split = appKey.split(";");

相关图片

相关文章