Această regulă semnalează URL-urile care conţin un plus ("+") care nu se află în porţiunea parametrilor de interogare din URL. În codul Java, regula scanează pentru constructori java.net.URL şi inspectează parametrii utilizaţi pentru a crea URL-ul. Regula caută semnul plus în URL, dar nu şi în parametrii de interogare. Parametrii de interogare includ tot ce se află la dreapta caracterului "?" în URL.
Înainte de WebSphere Application Server Versiunea 5.1, când un URL era decodat, acesta era decodat în întregime, nu doar parametrii de interogare. Acest comportament nu a fost corect şi containerul web a fost modificat pentru a nu trata semnul plus ca un caracter special atunci când nu se află în parametrii de interogare. Aceasta a cauzat regresul aplicaţiilor şi în Versiunea 5.1.1.11 a fost adăugată o proprietate de personalizare pentru containerul web care vă permite să controlaţi comportamentul decodării semnului plus. Comportamentul implicit pentru această proprietate de personalizare este vechiul comportament, care decoda semnul plus oriunde în URL.
Dacă aveţi URL-uri care conţin un plus ce nu ar trebui să fie decodat, trebuie să setaţi proprietatea de personalizare a containerului web com.ibm.ws.webcontainer.decodeURLPlusSign la false. Comportamentul implicit este true.
Regula Java inspectează constructorii de URL şi, dacă este posibil, caută în parametrii spec, host şi file ai constructorilor, pentru a verifica dacă nu există semne plus. Regula scanează constructorii care transmit literali String sau variabile String finale care sunt definite în aceeaşi unitate de compilare. Dacă pot fi inspectaţi parametrii spec, host sau file, vor fi semnalaţi numai acei constructori care violează regula.
De asemenea, regula Java va semnala instanţele de constructor de URL care au nume spec, host sau file codate ca variabilă ce nu poate fi inspectată.
Exemplul 1.
|
import java.net.URL; URL url = new URL("http://www.domain.com?id=test&name=plus+sign"); } |
În Exemplul 1, regula nu va semnala constructorul de URL, deoarece semnul plus se află în parametrii de interogare.
Exemplul 2:
|
import java.net.URL; URL url = new URL("http://www.domain.com/plus+path?id=test&name=ok"); } |
În Exemplul 2, regula va semnala constructorul de URL, deoarece există un semn plus în partea de cale a URL-ului.
Pentru informaţii suplimentare, vedeţi java.net.URL în documentaţia Java.