Ricerca una modifica del comportamento negli URL che contengono il simbolo di addizione

Questa regola contrassegna gli URL che contengono un simbolo ("+") che non si trova nella parte relativa ai parametri della query dell'URL. Nel codice Java, la regola esegue la scansione dei costruttori java.net.URL ed analizza i parametri utilizzati per creare l'URL. La regola ricerca il simbolo di addizione nell'URL ma non nei parametri della query. I parametri della query comprendono tutte le informazioni a destra del carattere "?" nell'URL.

Prima di WebSphere Application Server Versione 5.1, quando un URL veniva decodificato, veniva decodificato l'intero URL e non solo i parametri della query. Tale comportamento non era corretto ed il contenitore Web è stato modificato in modo da non considerare il simbolo di addizione come carattere speciale quando non si trova nei parametri della query. Ciò causava regressioni dell'applicazione e nella Versione 5.1.1.11 è stata aggiunta una proprietà personalizzata del contenitore Web che consente di controllare il comportamento della codifica del simbolo di addizione. Il comportamento predefinito per questa proprietà personalizzata è il comportamento precedente, in base al quale il simbolo di addizione veniva decodificato in qualsiasi punto dell'URL.

Se si dispone di URL che contengono un simbolo di addizione che non deve essere decodificato, è necessario impostare la proprietà personalizzata del contenitore Web com.ibm.ws.webcontainer.decodeURLPlusSign su false. Il comportamento predefinito è true.

La regola Java analizza i costruttori URL e se possibile controlla i parametri spec, host e file dei costruttori per verificare che non siano presenti simboli di addizione. La regola esegue la scansione dei costruttori che passano letterali String o variabili final String definiti nella stessa unità di compilazione. Se è in grado di analizzare i parametri spec, host o file, contrassegna solo i costruttori che violano la regola.

La regola Java contrassegna anche le istanze del costruttore URL che hanno spec, host o nome file codificati come variabile che non può essere analizzata.

Esempio 1.


import java.net.URL;

URL url = new URL("http://www.domain.com?id=test&name=plus+sign");
}

Nell'Esempio 1, la regola non contrassegna il costruttore URL perché il simbolo di addizione si trova nei parametri della query.

Esempio 2:


import java.net.URL;

URL url = new URL("http://www.domain.com/plus+path?id=test&name=ok");
}

Nell'Esempio 2, la regola contrassegna il costruttore URL perché è presente un simbolo di addizione nella parte dell'URL relativa al percorso.

Per ulteriori informazioni, consultare java.net.URL Java documentation.