咨询Apache Tomcat配置方法 拦截URL触发的exe文件下载
Tomcat 限制exe文件非法下载配置方案
该问题根源是Tomcat在Windows环境下默认将反斜杠\识别为路径分隔符,在exe路径末尾追加\的请求会绕过原有业务路由规则,被Tomcat判定为静态资源请求直接触发文件下载。现有web.xml中配置的pdmweb.exe属于web引擎的映射入口,不属于静态资源访问规则,无法拦截这类恶意请求。
可通过以下三层配置实现防护,按需选择即可:
1. 配置安全约束拦截exe访问(单应用/全局均可生效)
如果只需要对单个应用生效,修改应用内WEB-INF/web.xml;如果要对Tomcat下所有应用生效,修改Tomcat根目录下conf/web.xml,添加如下安全约束配置:
<security-constraint> <web-resource-collection> <web-resource-name>Block EXE Download</web-resource-name> <!-- 覆盖所有exe请求变体,包含带斜杠、反斜杠的绕过场景 --> <url-pattern>*.exe</url-pattern> <url-pattern>*.exe\</url-pattern> <url-pattern>*.exe/*</url-pattern> <url-pattern>*.exe\*</url-pattern> </web-resource-collection> <!-- 不配置授权角色意味着所有访问都被禁止,直接返回403 --> <auth-constraint/> </security-constraint>
该配置不会影响现有pdmweb.exe的业务映射逻辑,只会拦截静态exe文件的直接访问请求。
2. 全局关闭反斜杠路径兼容,堵死绕过路径
修改Tomcat根目录下conf/catalina.properties文件,添加或修改如下配置,从底层拦截带非法分隔符的请求:
# 禁止将反斜杠识别为路径分隔符 org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=false # 开启可疑URI拦截,自动拦截路径遍历、特殊字符绕过类请求 org.apache.catalina.connector.REJECT_SUSPICIOUS_URIS=true
该配置修改后必须重启Tomcat才能生效,配置后不仅能拦截exe下载绕过,还能防护其他后缀文件被同类反斜杠手法非法访问。
3. 静态资源Servlet层面禁止exe后缀响应
如果应用本身完全不需要对外提供exe类静态文件下载,可以在web.xml中修改DefaultServlet配置,直接禁止exe后缀被静态资源处理器响应:
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <!-- 保留原有已配置的init-param,追加以下配置 --> <init-param> <param-name>forbiddenExtensions</param-name> <param-value>exe,dll,bat,msi</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
配置验证
所有配置修改完成后重启Tomcat,依次验证:
- 访问正常业务地址
http://<server_name>/abc/xyz.exe,确认原有业务逻辑正常运行 - 访问恶意构造的地址
http://<server_name>/abc/xyz.exe\,确认返回403状态码,不会触发文件下载 - 访问应用内其他任意exe路径,确认不会被直接下载
内容的提问来源于stack exchange,提问作者Bharath
相关产品推荐
相关产品推荐

