实践-根据request_uri判断return 403

本文介绍了一种通过日志分析应对DDoS攻击的方法,通过识别并阻止/?xxx1,/?xxx2,/?xxx3等恶意参数,返回403错误响应,从而减轻后端服务器压力。

背景:ddos通过特定参数访问/?xxxx,造成流量过大,导致后端sever 产生大量的close_wait。通过日志分析,发现有一些特定的/?xxxx。所以根据/?xxxx。判断返回403。减小后端Server压力;

location ~ ^/ {
    if ($request_uri ~* "(/?xxx1|/?xxx2|/?xxx3)")
    {
        return 403;
        access_log logs/access_403.log ;
        break;
    }

更多参数后续整理一下,目前查看网上的连接:https://www.cnblogs.com/linguoguo/p/11547822.html

<think>我们正在分析一个lighttpd的WebDAV模块注册函数。用户想知道HTTP请求体解析函数在哪里。 根据提供的模块注册结构,我们看到了多个函数指针,但没有直接命名为请求体解析的函数。 在lighttpd中,请求体的处理通常由核心服务器完成,然后通过特定的handler传递给模块。 具体到WebDAV模块,请求体可能在处理请求的阶段被使用,例如在`handle_physical`或`handle_subrequest`中。 观察注册的函数: - `handle_physical`: mod_webdav_physical_handler - `handle_subrequest`: mod_webdav_subrequest_handler 通常,对于WebDAV请求(如PUT、PROPFIND等),请求体包含重要的数据(如文件内容或属性信息)。 因此,解析请求体的工作很可能发生在处理这些请求的handler中。 具体来说,在mod_webdav模块中,请求体会在`mod_webdav_physical_handler`中被处理,因为该函数负责处理实际的文件操作(如上传文件,这时需要请求体)。 此外,在lighttpd中,请求体通常通过`connection`结构体的`request`成员来访问(例如con->request.body)。模块不需要自己解析原始请求体,因为核心已经解析好了(除非有特殊需求)。 因此,回答用户:HTTP请求体解析函数并不直接出现在模块注册中,因为核心服务器已经处理了请求体。模块只需要在需要的地方(如mod_webdav_physical_handler)使用已经解析好的请求体数据。 根据规则,我们需要在回答后提出3-5个相关问题。 </think>在Lighttpd的WebDAV模块注册中,HTTP请求体解析函数没有直接出现在插件注册结构体中。请求体处理的逻辑通常隐藏在更深层的处理流程中,具体分析如下: ### 关键解析位置 1. **物理处理器(核心入口)** 请求体解析最可能发生在物理处理函数中: ```c p->handle_physical = mod_webdav_physical_handler; // 主要处理入口 ``` 在此函数中通常会调用`connection_handle_read_post_state()`等核心函数解析请求体。 2. **子请求处理器** 当存在嵌套请求时,子请求处理器可能涉及: ```c p->handle_subrequest = mod_webdav_subrequest_handler; ``` 3. **URI清理阶段** 预处理阶段可能提前操作请求体: ```c p->handle_uri_clean = mod_webdav_uri_handler; ``` ### 典型实现模式 在`mod_webdav_physical_handler`中通常会看到: ```c static int mod_webdav_physical_handler(server *srv, connection *con) { // 检查请求方法(PUT/PROPFIND等需要请求体的方法) if (con->request.http_method == HTTP_METHOD_PUT) { // 核心请求体解析调用 int ret = connection_handle_read_post_state(srv, con); if (ret != HANDLER_GO_ON) return ret; // 此时con->request.body已包含解析后的数据 buffer *req_body = con->request.body; } } ``` ### 验证建议 1. 在`mod_webdav_physical_handler`添加调试日志: ```c fprintf(stderr, "Body size: %ld, content: %.*s\n", con->request.body->size, (int)con->request.body->size, con->request.body->ptr); ``` 2. 检查`src/mod_webdav.c`中的`connection_handle_read_post_state`调用链
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值