Esta regra sinaliza URLs que contêm um sinal de mais ("+") que não está na parte de parâmetros da consulta da URL. No código Java, a regra faz a varredura para encontrar construtores java.net.URL e inspecionar os parâmetros usados para criar a URL. A regra procura pelo sinal de mais na URL mas não nos parâmetros de consulta. Os parâmetros de consulta incluem tudo à direita do "?" na URL.
Antes do WebSphere Application Server Versão 5.1, quando uma URL era decodificada, toda a URL era decodificada, não apenas os parâmetros de consulta. Esse comportamento não era correto, e o Web container foi modificado para não tratar um sinal de mais como um caractere especial quando ele não estiver nos parâmetros de consulta. Isso causou regressões de aplicativos, e na Versão 5.1.1.11 uma propriedade customizada do contêiner da web foi incluída para permitir que você controlasse o comportamento da decodificação do sinal de mais. O comportamento padrão para essa propriedade customizada é o comportamento antigo que decodificava o sinal de mais em qualquer ponto da URL.
Se você tiver URLs que contenham um sinal de mais que não deva ser decodificado, você deve definir a propriedade customizada do Web container com.ibm.ws.webcontainer.decodeURLPlusSign como false. O comportamento padrão é true.
A regra Java inspeciona construtores de URL e, se possível, verifica os parâmetros spec, host e file dos construtores para verificar se não há sinais de mais. A regra varre os construtores que passam Sequências literais ou variáveis de Sequência final que foram definidas na mesma unidade de compilação. Se ela puder inspecionar os parâmetros spec, host ou file, ela apenas sinalizará esses construtores que violam a regra.
A regra Java também sinalizará instâncias do construtor URL que possuam spec, host ou nome de arquivo codificado como uma variável que não pode ser inspecionada.
Exemplo 1.
|
import java.net.URL; URL url = new URL("http://www.domain.com?id=test&name=plus+sign"); } |
No Exemplo 1, a regra não sinalizará o construtor de URL porque o sinal de mais está nos parâmetros de consulta.
Exemplo 2:
|
import java.net.URL; URL url = new URL("http://www.domain.com/plus+path?id=test&name=ok"); } |
No Exemplo 2, a regra sinalizará o construtor de URL pois há um sinal de mais na parte do caminho da URL.
Para obter informações adicionais, veja a documentação Java java.net.URL.