不要使用 WebLogic Servlet 屬性進行 XML 剖析

此規則會偵測是否使用 WebLogic setAttribute 和 getAttribute 屬性來剖析 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 以後會用在程式碼中,請驗證是否採用其他方式起始設定了該物件。