我正在利用 ModSecurity WAF 来帮助阻止 tx 在 NGINX 上被认为是危险的:https: //github.com/SpiderLabs/ModSecurity https://github.com/SpiderLabs/ModSecurity-nginx
我的问题可以在这里找到: https ://github.com/SpiderLabs/ModSecurity-nginx/issues/182
我的问题的 TLDR 是 nginxerror_page
指令重置了原始客户端在重定向到 GET 期间发送的 HTTP 请求方法标头。这会导致 WAF 的误报日志报告客户端发送了一个带有 GET 等的 HTTP 正文,当他们真正发送一个 POST 并且 NGINX 命中error_page
重定向时,由于某些情况下上游在反向代理调用上超时。
为了解决这个问题,我需要对这个文件部分进行破解或公关: https ://github.com/SpiderLabs/ModSecurity-nginx/blob/master/src/ngx_http_modsecurity_rewrite.c#L145
在 sudo 代码中实现这样的目标:
//SAFE to trust this value as its the originating client HTTP REQUEST Method HEADER when not error_page
if(!r->error_page){
const char *n_method = ngx_str_to_char(r->method_name, r->pool);
//HOW to add a transaction persistent context value here to store STORED_CTX_HTTP_REQUEST_METHOD_HEADER_VALUE???
}
else { //IF ERROR_PAGE, then we need to grab the original stored CTX request http method header value.
const char *n_method = ngx_str_to_char(STORED_CTX_HTTP_REQUEST_METHOD_HEADER_VALUE);
}
而正是在这里,我一直无法解决上面的 sudo 代码。如何在这里创建一个 tx 上下文安全变量,该变量可以在各个阶段和内部error_page
重定向中持续存在以存储原始客户端 http 方法标头?
我登陆了这些 NGINX 页面指南,但到目前为止,还没有真正看到任何东西切入我想要的东西: https ://www.evanmiller.org/nginx-modules-guide.html
寻找任何了解该问题并可能能够将我的 sudo 代码转换为我可以在我的沙盒环境中测试的东西的 NGINX / C 大师。
注意我没有放弃我的 NGINX error_page 指令调用的奢侈。所以我确实需要一个我相信的上述 sudo 代码的解决方案。
谢谢!