Cette règle marque les URL qui contiennent un signe plus ("+") qui ne se trouve pas dans la portion des paramètres de requête de l'URL. En code Java, la règle recherche les constructeurs java.net.URL et inspecte les paramètres utilisés pour créer l'URL. La règle recherche le signe plus dans l'URL, mais non dans les paramètres de requête. Les paramètres de requête incluent tout ce qui se trouve à droite du "?" dans l'URL.
Avant WebSphere Application Server version 5.1, lors du décodage d'une adresse URL, l'intégralité de l'URL était décodée et pas seulement les paramètres de requête. Ce comportement n'était pas correct et le conteneur Web a été modifié pour ne plus traiter le signe plus comme un caractère spécial lorsqu'il ne se trouve pas dans les paramètres de requête. Cette modification a entraîné des régressions dans l'application, et dans la version 5.1.1.11, une propriété personnalisée de conteneur Web a été ajoutée pour vous permettre de contrôler le comportement du décodage du signe plus. Le comportement par défaut de cette propriété personnalisée correspond à l'ancien comportement qui décodait le signe plus n'importe où dans l'URL.
Si certaines de vos URL contiennent un signe plus qui ne doit pas être décodé, vous devez affecter à la propriété personnalisée com.ibm.ws.webcontainer.decodeURLPlusSign du conteneur Web la valeur false. Par défaut cette valeur est true.
La règle Java inspecte les constructeurs d'URL et vérifie si possible les paramètres spec, host et file de ces constructeurs pour s'assurer qu'il n'y a pas de signes plus. La règle analyse les constructeurs qui transmettent des littéraux chaîne ou des variables de chaîne finales définies dans la même unité de compilation. Si elle peut inspecter les paramètres spec, host ou file, elle ne marque que les constructeurs qui violent la règle.
La règle Java marque également les instances du constructeur d'URL dont la spécification, l'hôte ou le nom de fichier est codé comme une variable qui ne peut pas être inspectée.
Exemple 1.
|
import java.net.URL; URL url = new URL("http://www.domain.com?id=test&name=plus+sign"); } |
Dans l'exemple 1, la règle ne marque pas le constructeur d'URL car le signe plus se trouve dans les paramètres de requête.
Exemple 2 :
|
import java.net.URL; URL url = new URL("http://www.domain.com/plus+path?id=test&name=ok"); } |
Dans l'exemple 2, la règle marque le constructeur d'URL car la portion chemin de l'URL contient un signe plus.
Pour plus d'informations reportez-vous à la documentation java.net.URL Java.