未授权访问漏洞-java

该漏洞是无需登录操作直接进入登录成功后的页面,这种漏洞多数是已get方法来跳过登录到达相应的目的

第一种:使用登录的URL

比如:http://localhost:8080/LeakHandle/user/loginUser?userName=admin&password=123456

解决办法:

(1)、get变post,禁止使用get方式,指定POST请求方式,并对参数判断

(2)、在JSP中不可使用GET

/**
     * 登录---帆
     * @param user
     * @param request
     * @param response
     * @param session
     * @param model
     * @return
     */
    @RequestMapping(value = "loginUser")//,method = RequestMethod.POST)//Spring MVC使用
    public String loginUser(User user,HttpServletRequest request,HttpServletResponse response,HttpSession session,Model model) {
        String format = sdf.format(new Date());
        if (request.getMethod().equals("GET")) {//Struts2使用
            return error( request, response, model, user);
        }else if (request.getMethod().equals("POST")) {
            if (user != null) {
                List u = userService.loginUser(user);
                session.setAttribute("user", u.get(0));
                model.addAttribute("user", u.get(0));
                return "success";
            }
        }
        return null;
    }

 

 

第二种:使用登录成功的JSP路径访问

比如:

http://localhost:8080/LeakHandle/success.jsp

这是直接用JSP的路径直接访问

解决办法:在登录的方法中,使用request保存一个参数在相应的JSP中取出来,在$(function(){});进行判断

未授权访问漏洞-java_第1张图片

/**
     * 登录---帆
     * @param user
     * @param request
     * @param response
     * @param session
     * @param model
     * @return
     */
    @RequestMapping(value = "loginUser")//,method = RequestMethod.POST)
    public String loginUser(User user,HttpServletRequest request,HttpServletResponse response,HttpSession session,Model model) {
        String format = sdf.format(new Date());
        if (request.getMethod().equals("GET")) {
            return error( request, response, model, user);
        }else if (request.getMethod().equals("POST")) {
            if (user != null) {
                List u = userService.loginUser(user);
                session.setAttribute("user", u.get(0));
                model.addAttribute("user", u.get(0));
                request.setAttribute("param", UUID.randomUUID().toString());//使用request保存一个参数
                return "success";
            }
        }
        return null;
    }

你可能感兴趣的:(未授权访问漏洞-Java,java)