m0_64404016 2023-03-16 18:17 采纳率: 100%
浏览 18
已结题

action=in&id=1&pw=123请问要如何利用Servlet过滤器对这种行为进行过滤呢

现在用JAVAEE制作了一个登录系统
一般而言需要手动登录才能进入系统
使用Servlet过滤器进行初步加权限(限制未登录直接访问)后发现用户在网址窗口明文输入用户名和密码也能直接登录系统
例如:
oa?action=in&id=1&pw=123
请问要如何利用Servlet过滤器对这种行为进行过滤呢?

  • 写回答

3条回答 默认 最新

  • 追cium 2023-03-16 19:10
    关注

    参考GPT和自己的思路:

    若想通过Servlet过滤器来过滤输入的用户名和密码,需要进行以下步骤:

    1. 在过滤器中获取请求的参数,即用户名和密码;
    2. 进行校验,如判定用户名和密码是否为空,是否符合规范等;
    3. 如果校验通过,将请求传递给下一个过滤器或Servlet进行后续处理;否则,返回错误信息或者跳转到错误页面。

    具体实现方式可以参考以下代码:

    public class LoginFilter implements Filter {
     
        public void init(FilterConfig filterConfig) throws ServletException {
        }
     
        public void destroy() {
        }
     
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
     
            HttpServletRequest req = (HttpServletRequest) request;
            HttpServletResponse res = (HttpServletResponse) response;
     
            String id = req.getParameter("id");
            String pw = req.getParameter("pw");
     
            if (id == null || pw == null || id.trim().isEmpty() || pw.trim().isEmpty()) {
                res.sendRedirect("error.html"); // 校验失败,跳转到错误页面
            } else {
                chain.doFilter(request, response); // 校验成功,将请求传递给下一个过滤器或Servlet进行后续处理
            }
        }
    }
    

    参照上述代码实现过滤器,并在web.xml文件中配置过滤器即可达到对输入的用户名和密码进行过滤的目的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月16日

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办