0

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." 

答えて

1

ModSecurityは実際にこのロジックを配置するのには適していません。

コレクションが書かれたときに保証がないことを正しく述べているので、コレクションが信頼できない場合でも(以下を参照)、重複チェックのように絶対に使用しないでください。ブルートフォースやDoSチェックのようなものであれば問題ありません。たとえば、10回のチェックではなく11回または12回のチェックの後に停止することはそれほど大きな問題ではありません。ただし、重複を停止するような絶対的なチェックでは、ここでの確実性の欠如は、これがこのチェックを行うには不適切な場所であることを意味します。私のWAFは、あなたのアプリケーションを動作させるために(または少なくとも中断を止めるために)依存するものではなく、特別な防御層でなければなりません。私には、重複した要求がアプリケーションのトランザクションの完全性に本当の問題を引き起こす場合、それらのチェックはWAFではなくアプリケーションに属します。

これに加えて、ModSecurityでコレクションが動作するディスクベースの方法は、特に複数のプロセス/スレッドが一度にそれらにアクセスしようとすると、データの永続化と永続性の除去の両方で信頼性が低くなりますデータ。 ModSecurityが自動的にコレクションをクリーンアップしようとしたときに、ModSecurityOWASP ModSecurity CRSメーリングリストの多くの人がログファイルにエラーを見て、コレクションファイルが成長してApacheが悪影響を及ぼし始めるまで、一般的に、プロダクション用のユーザーコレクション、特にボリュームのあるWebサーバーのユーザーコレクションはお勧めしません。

は、上記の問題の多くに対処している可能性がある夕暮れベースのSDBM形式を使用して停止しましたが、完了していませんでした。though it may be part of ModSecurity v3。しかし、私はまだWAFがこれをチェックする場所であるとは反対します。

関連する問題