技術空間

JSP

JSTLでXSS(クロスサイトスクリプティング)対策


TOP > JSP > JSTLでXSS(クロスサイトスクリプティング)対策



■JSTLでXSS(クロスサイトスクリプティング)対策

<c:out/>で出力すれば勝手にエスケープしてくれる。

下記の文字がエスケープされる。

エスケープ前エスケープ後
<&lt;
>&gt;
&&amp;
'&#039;
"&#034;

サンプル
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% request.setAttribute("test", "JSTLテスト&\"<br>"); %>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<c:out value="${test}" />
</body>
</html>
出力結果(ブラウザ)
JSTLテスト&"<br>

ブラウザからソースの表示をしてみるとエスケープされているのがわかる。

出力結果(HTMLソース)
JSTLテスト&amp;&#034;&lt;br&gt;

エスケープしたくない場合

escapeXml="false"」を指定する。

サンプル
<c:out value="${test}" escapeXml="false" />

JSTLテスト&\"<br>」を出力すると、以下のように<br>はそのまま改行タグとして解釈される。

出力結果(ブラウザ)
JSTLテスト&"

HTML上のソースは以下のようになっている。

出力結果(HTMLソース)
JSTLテスト&"<br>


TOP > JSP > JSTLでXSS(クロスサイトスクリプティング)対策

Tweet ̃Gg[͂ĂȃubN}[Nɒlj
技術空間