From a142e187ad4be8c11f1968c3befa544232c6dec2 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Mon, 13 Nov 2023 17:20:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=90=E5=88=B6=E8=AF=B7=E6=B1=82=E5=9F=9F?= =?UTF-8?q?=E5=90=8D=E9=95=BF=E5=BA=A6=E4=B8=8D=E8=B6=85=E8=BF=87253?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/nodes/listener_http.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/internal/nodes/listener_http.go b/internal/nodes/listener_http.go index 3a8f366..92a6f59 100644 --- a/internal/nodes/listener_http.go +++ b/internal/nodes/listener_http.go @@ -107,15 +107,23 @@ func (this *HTTPListener) Reload(group *serverconfigs.ServerAddressGroup) { // ServerHTTP 处理HTTP请求 func (this *HTTPListener) ServeHTTP(rawWriter http.ResponseWriter, rawReq *http.Request) { + if len(rawReq.Host) > 253 { + http.Error(rawWriter, "Host too long.", http.StatusBadRequest) + time.Sleep(1 * time.Second) // make connection slow down + return + } + var globalServerConfig = sharedNodeConfig.GlobalServerConfig if globalServerConfig != nil && !globalServerConfig.HTTPAll.SupportsLowVersionHTTP && (rawReq.ProtoMajor < 1 /** 0.x **/ || (rawReq.ProtoMajor == 1 && rawReq.ProtoMinor == 0 /** 1.0 **/)) { http.Error(rawWriter, rawReq.Proto+" request is not supported.", http.StatusBadRequest) + time.Sleep(1 * time.Second) // make connection slow down return } // 不支持Connect if rawReq.Method == http.MethodConnect { http.Error(rawWriter, "Method Not Allowed", http.StatusMethodNotAllowed) + time.Sleep(1 * time.Second) // make connection slow down return }