Toto pravidlo značí adresy URL, které obsahují znaménko plus ("+"), které nejsou v části parametrů dotazu adresy URL. V kódu Java pravidlo prochází konstruktory java.net.URL a kontroluje parametry použité k vytvoření adresy URL. Pravidlo hledá znaménko plus v adrese URL, ale ne v parametrech dotazu. Parametry dotazu zahrnují vše napravo od znaku "?" v adrese URL.
Před verzí WebSphere Application Server 5.1 byla při dekódování adresy URL dekódována celá adresa URL, nikoli pouze parametry dotazu. Toto chování nebylo správné a webový kontejner byl změněn tak, aby nepovažoval znak plus za speciální znak, pokud se nenachází v parametrech dotazu. To způsobilo regresi aplikace a ve verzi 5.1.1.11 byla přidána přizpůsobená vlastnost webového kontejneru, aby bylo možné kontrolovat chování dekódování znaku plus. Výchozí chování této přizpůsobené vlastnosti je staré chování, které dekódovalo znak plus kdekoli v adrese URL.
Pokud máte adresy URL obsahující znak plus, které by nemělo být dekódováno, je třeba nastavit přizpůsobenou vlastnost webového kontejneru com.ibm.ws.webcontainer.decodeURLPlusSign na hodnotu false. Výchozí chování je true.
Pravidlo Java kontroluje konstruktory adres URL a pokud je to možné, kontroluje parametry specifikace, hostitele a souboru konstruktorů k ověření, že nejsou k dispozici žádné znaky plus. Pravidlo prochází konstruktory, které předávají řetězcové literály nebo konečné řetězcové proměnné, které jsou definovány ve stejné kompilační jednotce. Pokud může zkontrolovat parametry specifikace, hostitele nebo souboru, označí pouze ty konstruktory, které poruší pravidlo.
Pravidlo Java rovněž označí instance konstruktoru URL, které mají specifikaci, hostitele nebo název souboru zakódovaný jako proměnnou, kterou nelze zkontrolovat.
Příklad 1.
|
import java.net.URL; URL url = new URL("http://www.domain.com?id=test&name=plus+sign"); } |
V příkladu 1 pravidlo neoznačí konstruktor adresy URL, protože znak plus je v parametrech dotazu.
Příklad 2:
|
import java.net.URL; URL url = new URL("http://www.domain.com/plus+path?id=test&name=ok"); } |
V příkladu 2 pravidlo označí konstruktor adresy URL, protože je zde znak plus v části cesty adresy URL.
Další informace viz dokumentace Java java.net.URL.