过滤器过滤.jsp;.js等url访问文件

本文介绍了如何使用Filter在Java Web应用中阻止用户直接访问.jsp, .js, .css等文件,确保仅能通过action进行访问。首先在web.xml配置XssFilter,然后在过滤器类中检查请求的Referer和Servlet Path,如果发现直接输入的URL,会重定向到首页。" 86630389,8200527,CSS技巧:轻松创建六边形,"['CSS技术', 'HTML5开发', '前端框架']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在web.xml 中配置Filter过滤器例如

     <filter>
        <filter-name>XssFilter</filter-name>
        <filter-class>过滤器路径位置</filter-class>
    </filter> 
    
    <filter-mapping>
        <filter-name>XssFilter</filter-name>
        <url-pattern>/*</url-pattern>

    </filter-mapping>

在过滤器.java文件中写



public class XssFilter implements Filter {


    public void destroy() {  
        // TODO Auto-generated method stub  
  
    }  
  
  
    /** 
     * 通过url只能访问action 
     */  
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,  
            ServletException {  
            HttpServletRequest request = (HttpServletRequest) req;  
            request.setCharacterEncoding("utf-8");             
    HttpServletResponse resp = (HttpServletResponse) res;
    String conString = "";
    conString = request.getHeader("REFERER");// 获取父url--如果不是直接输入的话就是先前的访问过来的页面,要是用户输入了,这个父url是不存在的
    if ("".equals(conString) || null == conString) { // 判断如果上一个目录为空的话,说明是用户直接输入url访问的
    String servletPath = request.getRequestURI();
    if(servletPath.contains(".jsp")) {
    if(!servletPath.contains("retrieve.jsp")) {
    //判断uri地址的后缀名
        resp.sendRedirect(request.getContextPath());// 跳回首页
        return; 
    }
    }else if (servletPath.contains(".js") || servletPath.contains(".css")
    || servletPath.contains(".html")) {
    //判断uri地址的后缀名
    resp.sendRedirect(request.getContextPath());// 跳回首页
    return; 
    }
    }
               chain.doFilter(request , res);  
    }  
  
    public void init(FilterConfig arg0) throws ServletException {  
        // TODO Auto-generated method stub  
  
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值