Tips

【Java】JSPのサニタイズ

【Java】JSPのサニタイズ

JSPのサニタイズについて

まず以下のJSPがあります。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>サニタイズサンプル</title>
</head>
<body>
	
<h1>サニタイズサンプル</h1>


	
<form action="sanitize.jsp" method="POST">
		<input type="text" name="input">
		<button type="submit">送信</button>
	</form>


	

${param['input']}

</body>
</html>

フォームで入力された値を出力するだけです。

しかしこのままではフォームにscriptタグを埋め込み実行させることができてしまいます。
このクロスサイトスクリプティングを防ぐには「サニタイズ」という、特殊文字の置換が必要になります。
<」、「>」、「%」、「」、「」などはサニタイズが必要となります。

自分で組むとなると面倒ですが、Coreタグライブラリのを使えば自動でサニタイズしてくれます。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>サニタイズサンプル</title>
</head>
<body>
	
<h1>サニタイズサンプル</h1>


	
<form action="sanitize.jsp" method="POST">
		<input type="text" name="input">
		<button type="submit">送信</button>
	</form>


	

<c:out value="${param['input']}"/>

</body>
</html>

これで問題ありません。

Coreタグライブラリを使用するにはライブラリの追加が必要なので気をつけてください。
JSTLのサイトからjarファイルをダウンロードし、ビルドパスを通してください。
https://tomcat.apache.org/taglibs/standard/

新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search