第二课-零基础学习代码审计第2节-JavaWeb简单demo实现

admin 2024年7月9日07:14:24评论8 views字数 2330阅读7分46秒阅读模式

需求如下:

1、身份:包含管理员和普通用户

2、登陆成功后都跳转到首页,管理员有两个按钮:查看个人信息和查看所有人员信息 。普通用户只能查看个人信息。

3、保证权限校验的正确,不能存在垂直越权。

4、前端页面使用jsp

5、先不适用数据库,使用本地模拟的方式提供数据。后面讲到sql注入的时候在说数据库。

实现思路:

1、“数据库表设计”:由于我们现在还不使用数据库,所以,我们可以把对应实体类创建好,然后可以初始化一些数据,等到后面学习SQL注入的时候,再把创建表。

    既然设计到权限的概念,在不使用框架的情况下,我们就需要存在权限字段。但是管理员和普通用户又都用相同的地方,所以我们可以抽象出来一个基础类,让管理员和普通用户类继承基础类。

这里使用了反射优化Servlent,

BaseServlent:

public class BaseServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        System.out.println("get启动!");        //获取URI路径        String uri = request.getRequestURI();        //把"/day2/user/login" /day2/user中 删除        String methodName = new StringBuffer(uri.substring(uri.lastIndexOf("/") + 1)).toString();        //根据方法名获取对应的方法对象,最后执行方法        Method method = null;        try {            //哪一个对象调用doGet方法,则this代表哪个对象            method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);            method.invoke(this, request, response);        } catch (NoSuchMethodException e) {            e.printStackTrace();            // 重定向到404            response.sendRedirect(request.getContextPath() + "/error/404.html");        } catch (InvocationTargetException e) {            throw new RuntimeException(e);        } catch (IllegalAccessException e) {            e.printStackTrace();        }    }    @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        System.out.println("post启动!");        this.doGet(req, resp);    }

filter:

package com.llu.filter;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * @author jackliu  Email: * @description: * @Version * @create 2024-07-07 22:34 */@WebFilter(urlPatterns = "/*")public class IndexFilter implements Filter {    @Override    public void init(FilterConfig filterConfig) throws ServletException {    }    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        HttpServletRequest req = (HttpServletRequest) request;        HttpServletResponse res = (HttpServletResponse) response;        String requestURI = req.getRequestURI();        // 检查请求的URL是否为"/index",如果是,判断是否登录        if (requestURI.endsWith("index.jsp")) { // aaa/../            if (req.getSession().getAttribute("user") == null) {                // 未登录,重定向到登录页面                res.sendRedirect(req.getContextPath() + "/login.jsp");                return;            }        }        chain.doFilter(request, response);    }    @Override    public void destroy() {    }}

实现效果:

1、登录成功后跳到首页:

第二课-零基础学习代码审计第2节-JavaWeb简单demo实现

2、登录成功后:

第二课-零基础学习代码审计第2节-JavaWeb简单demo实现

原文始发于微信公众号(安全随心录):第二课-零基础学习代码审计第2节-JavaWeb简单demo实现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月9日07:14:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   第二课-零基础学习代码审计第2节-JavaWeb简单demo实现https://cn-sec.com/archives/2933330.html

发表评论

匿名网友 填写信息