檢查包含加號之 URL 上的行為變更

此規則會標示包含加號 ("+") 的 URL,該加號不在 URL 的查詢參數部分中。 在 Java 程式碼中,該規則會掃描 java.net.URL 建構子,並檢查建立 URL 時所使用的參數。 該規則會尋找位於 URL 中,但卻不在查詢參數中的加號。 查詢參數包括 "?" 右側的所有項目 URL 中的字元。

在 WebSphere Application Server 5.1 版之前,當解碼 URL 時,會解碼整個 URL,而不僅僅解碼查詢參數。 這個行為不正確,並且當加號不在查詢參數中時,Web 儲存器會變更為不將加號看作特殊字元。 這會導致應用程式回歸,在 5.1.1.11 版中,新增了 Web 儲存器自訂內容,可讓您控制對加號的解碼行為。 此自訂內容的預設行為是舊行為,會對位於 URL 中任何位置的加號進行解碼。

如果您的 URL 包含不應解碼的加號,則必須將 Web 儲存器自訂內容 com.ibm.ws.webcontainer.decodeURLPlusSign 設為 false。 預設行為是 true。

Java 規則會檢查 URL 建構子;如有可能,還會檢查建構子的規格、主機和檔案參數,以驗證是否不含加號。 該規則掃描用於傳遞「字串」文字或最終「字串」變數(定義於相同編譯單元)的建構子。 如果該規則可以檢查規格、主機或檔案參數,則它將只標示那些違規的建構子。

Java 規則還將標示 URL 建構子的實例,這些實例將規格、主機或檔名編碼為無法檢查的變數。

範例 1.


import java.net.URL;

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

在「範例 1」中,規則將不標示 URL 建構子,因為加號位於查詢參數中。

範例 2:


import java.net.URL;

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

在「範例 2」中,規則將標示 URL 建構子,因為在 URL 的路徑部分中存在加號。

如需相關資訊,請參閱 java.net.URL Java 說明文件