Diese Regel markiert URLs, die ein Pluszeichen ("+") enthalten, das sich nicht im Bereich der Abfrageparameter der URL befindet. In Java-Code sucht die Regel nach java.net.URL-Konstruktoren und überprüft die Parameter, die zur Erstellung der URL verwendet werden. Die Regel sucht nach dem Pluszeichen in der URL, aber nicht in den Abfrageparametern. Die Abfrageparameter enthalten alles rechts vom Fragezeichen (?) Zeichen in der URL.
Vor WebSphere Application Server Version 5.1 wurden bei der Decodierung eine URL nicht nur die Abfrageparameter decodiert, sondern die vollständige URL. Dieses Verhalten war nicht korrekt, und der Web-Container wurde dahingehend geändert, das Pluszeichen nicht als Sonderzeichen zu behandeln, wenn es nicht in den Abfrageparametern enthalten ist. Das erzeugte Anwendungsregressionen, und in Version 5.1.1.11 wurde eine angepasste Web-Container-Eigenschaft hinzugefügt, um das Verhalten bei der Decodierung des Pluszeichens zu steuern. Das Standardverhalten für diese angepasste Eigenschaft ist das alte Verhalten, bei dem das Pluszeichen an einer beliebigen Position in der URL decodiert wurde.
Wenn Sie URLs mit einem Pluszeichen haben, das nicht decodiert werden soll, müssen Sie die angepasste Web-Container-Eigenschaft com.ibm.ws.webcontainer.decodeURLPlusSign auf "false" setzen. Das Standardverhalten ist "true".
Die Java-Regel überprüft URL-Konstruktoren und überprüft, falls möglich, die Parameter spec, host und file, um sicherzustellen, dass keine Pluszeichen vorhanden sind. Sie kann Konstruktoren, die Zeichenfolgeliterale oder eine finale, in derselben Kompiliereinheit definierte Zeichenfolgevariable übergeben, überprüfen. Wenn die Regel die Parameter spec, host oder file überprüfen kann, markiert sie nur die Konstruktoren, die gegen die Regel verstoßen.
Die Java-Regel markiert auch Instanzen des URL-Konstruktors, für den die Spezifikation, der Hostname oder der Dateiname als nicht überprüfbare Variable codiert wurde.
Beispiel 1.
|
import java.net.URL; URL url = new URL("http://www.domain.com?id=test&name=plus+sign"); } |
In Beispiel 1 markiert die Regel den URL-Konstruktor nicht, weil das Pluszeichen in den Abfrageparametern enthalten ist.
Beispiel 2:
|
import java.net.URL; URL url = new URL("http://www.domain.com/plus+path?id=test&name=ok"); } |
In Beispiel 2 markiert die Regel den URL-Konstruktor, da ein Pluszeichen im Pfad der URL enthalten ist.
Weitere Informationen finden Sie in der Java-Dokumentation zu java.net.URL.