JSP ページにあるエスケープされていない EL 式の安全でないデータを報告します。 このような場合、クロスサイトスクリプト (XSS) の脆弱性を引き起こす可能性があります。

以下の説明では、汚染された (安全ではない、信頼できない) データとは逆に安全で信頼できるデータを指す用語「汚染されていない」データを使用しています。 詳細は、汚染のチェックを参照してください。

安全な (汚染されていない) オブジェクトとは以下を指します。

JSP ページには提供されるデータに対して異なるコンテキストがある場合があり、1 つのコンテキストに対してデータが安全でも、必ずしもすべてに対して安全というわけではありません。 いくつかの例については、クロスサイトスクリプト防止の早見表を参照してください。 このインスペクションはすべてのコンテキストで汚染されていない (安全である) ものとしてマークされたデータをスキップします。

このインスペクションは、メソッドおよびフィールドを安全であるとするために次のオプションをサポートします。

このインスペクションは JSP ページで安全ではないデータが安全なタグに到達する場所をハイライトしません。 たとえば、JSTL taglib の out タグはデフォルトで指定された値をエスケープするため安全です。 安全なタグのリストは構成できます (全範囲を定義するには tag または attribute の値を省略します)。

"JSTL <out> タグで囲む" クイックフィックスを使用すると、EL 式が JSTL <out> タグで囲まれます。

前:

  
    ${foo}
  

後:

  
  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  <c:out value="${foo}"/>
  

"JSTL escapeXml() 関数で囲む" は安全ではない値を escapeXml エスケープ関数で囲みます。

前:

  
  <%@ taglib prefix="custom" uri="WEB_INF/custom.tld" %>
  <custom:tag value="${foo}"/>
  

後:

  
    <%@ taglib prefix="custom" uri="WEB_INF/custom.tld" %>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    <custom:tag value="${fn:escapeXml(foo)}"/>
  

その他にも選択したタグを安全なタグに追加したり、関連するメソッド (またはフィールド) に untainted アノテーションを付与したりするためのクイックフィックスが多数あります。

カスタムのエスケープ関数を追加できます (「エスケープ関数」タブを参照してください)。 エスケープ関数に安全な値を返す JSTL の関数が含まれるようになりました (例: よく知られている escapeXml 関数)。 複数の異なる名前空間の URI を使用して JSTL 関数を 2 回定義する必要はありません。 "http://java.sun.com/jsp/jstl/functions" または "http://java.sun.com/jstl/functions" のどちらかが使用されると、もう一方もチェックされます。 すべての場所でエスケープ関数をその名前によってスキップすることもできます。 そのためには、名前空間 URI フィールドを空のままにします。