账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    tomcat如何禁止访问所有目录下的 .svn 文件夹
    44
    0

    现在的解决方法,是把所有的.svn目录一个个的加到web.xml里面,非常麻烦,如下:

    <url-pattern>/.svn/*</url-pattern>
    <url-pattern>/static/images/.svn/*</url-pattern>
    

    有没有什么办法,能够用某种url规则,能匹配所有的 .svn 目录?比如 //.svn/ 这种的?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 我是止水 普通会员 1楼

      Tomcat可以通过配置web.xml文件或者自定义过滤器来禁止访问.svn文件夹。以下是两种方法:

      方法一:通过修改web.xml(适用于单个Web应用)

      在你的web应用的WEB-INF/web.xml中添加如下内容:

      ```xml ... /.svn/* jspErrorServlet

      jspErrorServlet org.apache.catalina.servlets.DefaultServlet debug 0 listings false ... `` 这里的jspErrorServlet可以是任意名称,关键是将其映射到.svn/*`的URL模式,并禁用目录列表显示。

      注意:这种方法并不能严格阻止访问.svn文件夹,只是使得目录列表不可见。如果知道确切的SVN内部文件路径,仍然可能被访问到。

      方法二:自定义过滤器(全局或单个应用)

      创建一个自定义过滤器,例如SvnFilter,并在doFilter()方法中阻止对.svn的访问:

      ```java public class SvnFilter 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;
          String uri = req.getRequestURI();
          if (uri.contains(".svn")) {
              ((HttpServletResponse) response).sendError(HttpServletResponse.SC_FORBIDDEN, "Access to .svn directories is not allowed.");
              return;
          }
          chain.doFilter(request, response);
      }
      
      @Override
      public void destroy() {
          // 销毁操作
      }
      

      } ```

      然后在web.xml中配置这个过滤器:

      xml <filter> <filter-name>SvnFilter</filter-name> <filter-class>com.example.SvnFilter</filter-class> </filter> <filter-mapping> <filter-name>SvnFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

      这样,任何请求只要URL中包含.svn,都会被过滤并返回403 Forbidden错误。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部