Ellenőrizze a pluszjelet tartalmazó URL címek viselkedésváltozását

Ez a szabály azon plusz- ("+") jelet tartalmazó URL címeket látja el jelzővel, melyek esetén a pluszjel nem az URL lekérdezési paramétereket tartalmazó részében található. A szabály a java.net.URL konstruktorokat keresi a Java kódban, valamint megvizsgálja az URL cím létrehozásához használt paramétereket. A szabály az URL címben igen, a lekérdezési paraméterekben azonban nem keresi a pluszjelet. A lekérdezési paraméterek tartalmaznak mindent a "?" - től jobbra? Karakter az URL címben.

A WebSphere Application Server 5.1 változata előtt az URL címek visszafejtése során nem csupán a lekérdezési paraméterek, hanem a teljes URL cím visszafejtése megtörtént. Ez a viselkedés helytelen volt, a világhálós tároló pedig azóta módosításra került abban a tekintetben, hogy a pluszjelet ne kezelje speciális karakterként, ha az nem a lekérdezési paraméterekben szerepel. Mindez alkalmazásregresszióhoz vezetett, így az 5.1.1.11 változatban a világhálós tároló olyan egyéni tulajdonsága került hozzáadásra a rendszerhez, mely lehetővé tette a pluszjel visszafejtéséhez kapcsolódó viselkedés vezérlését. Az egyéni tulajdonság alapértelmezett viselkedése megegyezik a régi viselkedésmóddal, mely az URL cím bármely pontján visszafejtette a pluszjelet.

Amennyiben olyan URL címekkel rendelkezik, melyek nem visszafejtendő pluszjelet tartalmaznak, úgy false értékre kell állítania a világhálós tároló com.ibm.ws.webcontainer.decodeURLPlusSign egyéni tulajdonságát. Az alapértelmezett viselkedés: true.

A Java szabály megvizsgálja az URL konstruktorokat, és ha lehetséges, akkor a konstruktorok spec, host és file paramétereit is, hogy ellenőrizze a pluszjelek hiányát. A szabály a String literálokat vagy végleges String változókat átadó konstruktorokat keresi, melyek ugyanabban a fordítási egységben kerültek meghatározásra. Ha meg tudja vizsgálni a spec, host vagy file paramétereket, akkor csak azokat a konstruktorokat látja el jelzővel, melyek megsértik a szabályt.

A Java szabály az URL konstruktor változóként kódolt spec, host vagy file értékkel rendelkező példányait is ellátja jelzővel, melyek így nem vehetnek részt a vizsgálatban.

1. példa


import java.net.URL;

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

Az 1. példában a szabály az URL konstruktort nem látja el jelzővel, mivel a pluszjel a lekérdezési paraméterekben található.

2. példa:


import java.net.URL;

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

A 2. példában a szabály jelzővel látja el az URL konstruktort, mivel pluszjel található az URL cím útvonalat tartalmazó részében.

További információkért tekintse meg a következő leírást: java.net.URL Java dokumentáció.