HTTPパラメータの汚染について読んでいますが、1つ混乱しています。このようなエンドポイントがある場合、
https://security.stackexchange.com/editpost/?postuid=19348
あなたは次のようなHPP攻撃を試みました
https://security.stackexchange.com/editpost/?postuid=19348&postuid=1
バックエンドはまだ、編集しようとしているユーザーの投稿であることを確認しようとしませんか?リクエストとともに送信したCookieを介して
なぜこれが機能するのか、
https://security.stackexchange.com/editpost/?postuid=19348&postuid=1
そして、なぜあなたはこのようにURLを編集できないのですか?
https://security.stackexchange.com/editpost/?postuid=1
サーバーコードのさまざまな部分がさまざまな方法でリクエストを解釈し、その結果、アプリケーションがHTTPパラメータ汚染に脆弱になるという考え方になります。
あなたの例/editpost/?postuid=19348&postuid=1
の場合、承認を実行するコード部分(postuid=19348
で承認を確認する必要があります)と実際の編集(postuid=1
)。
これは、最近のWebアプリケーションでは通常の問題ではありません。たとえば、phpの(最新バージョンの)PHPでは、通常、パラメータ解析はフレームワークによって行われるため、$_GET["postuid"]
には両方のコードフラグメントに同じ値が含まれ、HTTP = PP攻撃は役に立たない。
HTTP PPは、パラメータが「手動」で、つまりアプリケーションロジックレイヤーで解析される場合、以前は大きな問題でした(そして、これは常に問題です)。この解析を異なる方法で実装する人々。