SparkJava - 无法验证静态文件的 http 方法

问题描述

需要有关静态文件的帮助

问题:应用程序启动时,静态文件可以通过任何(GET,POST,XXX)http方法访问 应用程序在漏洞扫描中失败,如下所示 已识别: - 动词篡改,仅允许所需的 http 方法,例如获取,发布。

Spark Java 版本:spark-core:2.7.2

服务器:Jetty(9.4.14.v20181114)

是否可以添加过滤器或其他替代方法来停止访问来自 CURL 或 POSTMAN 的静态信息?

样品复制器


    import static spark.Spark.halt;
    import spark.Service;
    public class ServerExample {
    
        public ServerExample() {
            Service service = Service.ignite().port(4568);
            service.staticFiles.externalLocation("C:\\dev");  //zip file https://github.com/perwendel/spark/issues/1204 [![download zip file for static][1]][1]  [![zip file content][1]][1]
    
            service.before((req,res) -> {
                System.out.println("Hello:" + req.headers());
            });
    
            service.get("/",(req,res) -> {
                if (!req.requestMethod().equalsIgnoreCase("GET")) {
                    halt(401,"invalid Http method");
                }
                return null;
            });
        }
        public static void main(String[] args) {
            new ServerExample();
        }
    }

从 CURL 重现问题

请求 1

有效请求

curl -X GET --insecure http://localhost:4568/

无效请求

curl -X XYZ --insecure http://localhost:4568/

针对静态 html 的有效和无效 http 请求的应用响应

<!doctype html>Welcome......

请求 2

有效请求

curl -X GET --insecure http://localhost:4568/manifest.json

无效请求

curl -X XYZ --insecure http://localhost:4568/manifest.json

作为清单文件的有效和无效 http 请求的应用响应

{
"icons": [\[][2]
{
"src": "favicon.png","sizes": "48x48",

上述 curl 请求中的 XYZ 是无效的 HTTP 方法

应用不应响应任何无效的 http 方法,并且在 staticFiles.externalLocation 的情况下不会为“/”添加过滤器。

可以帮助解决这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)