7.5.8. Traitement ambigu des éléments de requête (query)
7.5.8. Traitement ambigu des éléments de requête (query)
Le format des paramètres de formulaire HTML défini à la section 5 (« application/x-www-form-urlencoded ») de [HTMLURL] est largement déployé et pris en charge par de nombreux cadres applicatifs. Pour plus de commodité, certains de ces cadres combinent en particulier les paramètres présents dans la chaîne de requête HTTP et ceux présents dans le contenu du message, en particulier pour les messages POST dont la valeur Content-Type est « application/x-www-form-urlencoded ». L’identifiant de composant dérivé @query-param, défini à la section 2.2.8, tire ses valeurs uniquement de la section query de l’URI cible de la requête. Il serait donc possible pour un attaquant d’occulter ou de remplacer des paramètres de requête en surchargeant un paramètre de requête signé avec un paramètre de formulaire non signé, ou l’inverse.
Pour s’en prémunir, une application doit s’assurer que les valeurs utilisées pour la base de signature et pour l’application proviennent d’un contexte cohérent, en l’occurrence le composant query de l’URI cible. De plus, lorsque la requête HTTP a un contenu, une application devrait aussi signer le contenu du message, comme indiqué à la section 7.2.8.