Это правило помечает URL, содержащие знак плюса ("+") за пределами параметров запроса URL. В коде Java правило ищет конструкторы java.net.URL и проверяет параметры, используемые для создания URL. Правило ищет в URL знаки плюса за пределами параметров запроса. Параметры запроса включают в себя все справа от "?" в URL.
До WebSphere Application Server версии 5.1 при декодировании URL декодировался весь URL, а не только параметры запроса. Это было неправильно, поэтому в веб-контейнер были внесены изменения, чтобы знак плюса больше не интерпретировался как специальный символ, когда он указан не в параметрах запроса. Данное изменение привело к регрессионным ошибкам в приложениях, и в версии 5.1.1.11 было добавлено пользовательское свойство веб-контейнера, позволяющее управлять декодированием плюса. По умолчанию в этом пользовательском свойстве указано значение, соответствующее прежнему поведению, то есть плюс декодируется в любом месте URL.
Если есть URL, содержащие плюс, который не должен декодироваться, то в пользовательском свойстве веб-контейнера com.ibm.ws.webcontainer.decodeURLPlusSign следует указать значение false. По умолчанию указано значение true.
Правило для Java проверяет конструкторы URL и по возможности проверяет параметры spec, host и file в них на наличие знаков плюса. Правило проверяет конструкторы, в которые передаются строковые литералы или переменные типа String со спецификатором final, определенные в той же единице компиляции. Если есть возможность проверить параметры spec, host или file, то помечаются только те конструкторы, которые нарушают правило.
Правило для Java также помечает вызовы конструктора URL, у которых в параметре spec, host или file указана переменная, и ее невозможно проверить.
Пример 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 по java.net.URL.