modセキュリティを使用してポストパラメータの特定の値を探し、重複が入った場合にリクエストをブロックします。私はmod security user collectionを使用しています。問題は、私のリクエストが長時間実行されているため、1回のリクエストで5分以上かかる可能性があるということです。最初のリクエストが処理されるまで、ユーザコレクションiはディスクに書き込まれません。最初のリクエストの実行中に、postパラメータの重複値を使用して別のリクエストが入った場合、コレクションがまだ利用できないため、2番目のリクエストはブロックされません。私はこの状況を避ける必要があります。 modセキュリティで要求間でメモリベースの共有コレクションを使用できますか?その他の方法で?次のスニペット:modセキュリティを使用した重複したhttpリクエストのブロック
SecRule ARGS_NAMES "uploadfilename" "id:400000,phase:2,nolog,setuid:%{ARGS.uploadfilename},initcol:USER=%{ARGS.uploadfilename},setvar:USER.duplicaterequests=+1,expirevar:USER.duplicaterequests=3600"
SecRule USER:duplicaterequests "@gt 1" "id:400001,phase:2,deny,status:409,msg:'Duplicate Request!'"
ErrorDocument 409 "<h1>Duplicate request!</h1><p>Looks like this is a duplicate request, if this is not on purpose, your original request is most likely still being processed. If this is on purpose, you'll need to go back, refresh the page, and re-submit the data."