危険なHTTPリクエストを表示するスクリプトを作成していますが、HTTPリクエストのURIを正しくフィルタリングする方法がわかりません。考え方は、GETパラメータにURLが含まれているかどうかを調べることですが、指定された単語でGETパラメータに追加されたURLを無視します(たとえば、GETパラメータには任意のURLを含めることができます。この...URLにGETパラメータが含まれているとURLが無視される
GET /check/request?first=1&second=http://domain.tld/something&third=3 HTTP/1.1
...一致がなければならない。我々は、他のリクエストのスタートラインのような...
GET /check/request?goto=http://domain.tld/something HTTP/1.1
を持っている場合...これは無視されるべきである。
URLの任意の行に一致するベース正規表現は次のとおりです。
^(GET|POST).*\?.*\=http\:\/\/.* HTTP\/.*$
私はそれを正しく修正しようとしていたが、私のバージョンはだけでなく、パラメータとして、URL自体に言葉goto
が含まれている行と一致します。
^(GET|POST).*\?.*(?!.*goto)\=http\:\/\/.* HTTP\/.*$
任意の助けをいただければ幸いです。あなたはおそらく.*
にhttp://.*
ではなく、先読みに戻り読み意味
gotoパラメータがGETクエリの最初のものである場合、または1つしかない場合に役立ちます... gotoパラメータがGETクエリのどこにでもある可能性があるため、私が提供した例はおそらく少し間違っています... – user1257255
すぐに答えを更新する –
答えが更新されたかどうかを確認してください –