Не использовать атрибуты сервлета WebLogic для синтаксического анализа XML

Это правило находит все случаи использования атрибутов setAttribute и getAttribute WebLogic для синтаксического анализа XML. Правило выполняет поиск в коде Java. Для поиска WebLogic weblogic.servlet.XMLParsingHelper, поддерживающего эту функцию, используется отдельное правило.

Правило находит следующее:
  1. Все вызовы метода setAttribute, в первом аргументе которого указан один из следующих строковых литералов:
    • org.xml.sax.helpers.DefaultHandler
    • org.xml.sax.HandlerBase
    • org.w3c.dom.Document

    Пример:
    request.setAttribute("org.xml.sax.helpers.DefaultHandler", someObject)

  2. Все вызовы метода setAttribute, в первом аргументе которого задана ссылка на строковую переменную или строковое поле, инициализированные одним из следующих значений:
    • org.xml.sax.helpers.DefaultHandler
    • org.xml.sax.HandlerBase
    • org.w3c.dom.Document

    Пример:
      String handler = "org.xml.sax.helpers.DefaultHandler";
      request.setAttribute(handler, someObject);

  3. Все вызовы метода getAttribute, аргументом которого является один из следующих строковых литералов:
    • org.xml.sax.helpers.DefaultHandler
    • org.xml.sax.HandlerBase
    • org.w3c.dom.Document

    Пример: Document myDocument = request.getAttribute("org.w3c.dom.Document")

  4. Все вызовы метода getAttribute, в аргументе которого задана строковая переменная или строковое поле, инициализированные одним из следующих значений:
    • org.xml.sax.helpers.DefaultHandler
    • org.xml.sax.HandlerBase
    • org.w3c.dom.Document

    Пример:
      String handler = "org.w3c.dom.Document";
      Document myDoc = request.getAttribute(handler);


В сканере исходного кода доступно быстрое исправление для этого правила. В зависимости от структуры кода процедура быстрого исправления предлагает один из следующих вариантов:
  1. Удалить вызов метода.

    Примеры:
      request.setAttribute("org.xml.sax.helpers.DefaultHandler", myHandler);
      request.getAttribute("org.w3c.dom.Document");
    В результате применения быстрого исправления к предыдущим строкам они будут удалены.
    Примечание: если объект myHandler используется в нижележащем коде, необходимо убедиться в том, что он инициализируется другим способом.

  2. Удалить раздел инициализации переменной.

    Примеры:
      Document myDocument = request.getAttribute("org.w3c.dom.Document");
    В результате применения быстрого исправления предыдущий фрагмент кода изменяется на:
      Document myDocument;
    Примечание: если объект myDocument используется в нижележащем коде, необходимо убедиться в том, что он инициализируется другим способом.