この方法で JSP に文字列を表示します。
${someString}
もちろん、この文字列には特別な html 文字が含まれる場合があります。現在、悪意のあるコードを HTML に挿入することが可能です (たとえば、someString が javascript の場合は - を含めます<script src...>
)。
印刷する前にすべての文字列がエスケープされていることを確認するにはどうすればよいですか?
Spring MVC と JSP を使用しています。
この方法で JSP に文字列を表示します。
${someString}
もちろん、この文字列には特別な html 文字が含まれる場合があります。現在、悪意のあるコードを HTML に挿入することが可能です (たとえば、someString が javascript の場合は - を含めます<script src...>
)。
印刷する前にすべての文字列がエスケープされていることを確認するにはどうすればよいですか?
Spring MVC と JSP を使用しています。
JSTLコアを使用できます:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:out value="${someString}"/>
タグを使用して文字列を表示します。<c:out>
クロスサイト スクリプティングを回避できるように HTML 文字をエスケープします。属性を設定することで指定できますescapeXml=true
。value
もう 1 つの利点は、 が に評価された場合にデフォルト値を指定できることですnull
。
fn:escapeXml()
EL機能も使えます。そのためのJSTL 関数を含める必要があります。
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
別の可能な方法は、カスタムELResolverを構築することです。
EL式評価の変数およびプロパティ解決動作のカスタマイズを有効にします。
このブログでは、それを行う方法の実例を提供しています。
Spring MVC アプリ全体に対して、 web.xmlでエスケープを指定できます。
<context-param>
<param-name>defaultHtmlEscape</param-name>
<param-value>true</param-value>
</context-param>
spring
ただし、エスケープは次のようなタグにのみ適用されます。
<form:input path="formField" htmlEscape="true" />
最後に、サードパーティ ライブラリXSSFilterを試すことができます。
を使用してページレベルでこの動作を制御することもできます<spring:htmlEscape defaultHtmlEscape="true" />
JSP/Java では、次のコードを使用する必要があります。
JSP/HTML の場合:
<c:out value="TR tag </tr> Script Tag <script>alert("hello Rahul")</script>" escapeXml="true" />