ModSecurity WAF を活用して、NGINX で危険と見なされる tx をブロックしています: https://github.com/SpiderLabs/ModSecurity https://github.com/SpiderLabs/ModSecurity-nginx
私の問題はここにあります: https://github.com/SpiderLabs/ModSecurity-nginx/issues/182
私の問題の TLDR は、nginxerror_page
ディレクティブが、GET へのリダイレクト中に元のクライアントから送信された HTTP リクエスト メソッド ヘッダーをリセットすることです。error_page
これにより、クライアントが実際に POST を送信し、リバース プロキシ呼び出しでアップストリームのタイムアウトが発生した場合にNGINX がリダイレクトにヒットしたときに、クライアントが GET などで HTTP ボディを送信したことを報告する WAF の誤検知ログが発生します。
これを修正するには、このファイル セクションに何かをハックするか PR する必要があるようです: 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 コードを解決できなかったのはここです。error_page
元のクライアントの http メソッド ヘッダーを格納するために、フェーズと内部リダイレクト全体で保持できる tx コンテキスト セーフ変数をここで作成するにはどうすればよいでしょうか。
私はこれらのNGINXページガイドにたどり着きましたが、これまでのところ、私が望むものに実際に切り込んでいるサイコロはありません: https://www.evanmiller.org/nginx-modules-guide.html
この問題を理解し、サンドボックス環境でテストできるものに私の sudo コードを変換できる可能性がある NGINX / C の第一人者を探しています。
NGINX error_page ディレクティブの呼び出しを廃止する余裕はないことに注意してください。したがって、上記の sudo コードの解決策が必要だと思います。
ありがとう!