Home > 技術 > bean:writeのfilter属性をfalseにした場合の挙動を追う

bean:writeのfilter属性をfalseにした場合の挙動を追う

Strutsを使ってサニタイジングをした文字列を画面に表示したい場合、
bean:writeタグのfilter属性falseにすれば可能だが、実際にどうゆうクラスが行っているかをちょっと確認してみた。

大体の使いかたは以下の感じだろう。

これで
「<span>hogehoge</span>」
という文字が画面にそのまま出力されるようになる。

これはXSS(クロスサイトスクリプティング)を防ぐ最も重要なことですが、とは言っても
Java側のどのクラスがそれをやっているのかは知らなかった。

今回はstruts-1.3.5を使っています。
では以下じゅんぐり追っていこう!

struts-bean.tld(941行目)

まずはtldファイルの中のwriteを定義している場所を探す。
そうするとタグクラスとしてorg.apache.struts.taglib.bean.WriteTagが指定されていた。

WriteTag.class(246行目)

ここは実際にbean:writeが呼ばれた場合に行う処理の部分。
さぁどこでサニタイジングしているのかな?

filterでif文を分けていたので、ここだ!
TagUtils.getInstance().filter(output)
この部分が怪しい。

TagUtils.class(563行目)

んで、TagUtilsの中に飛ぶとResponseUtilsクラスのfilterメソッドを呼んでいた。

ResponseUtils.class(80行目のメソッドの中)

ありましたw
お決まりの置換処理ですね。
一見強烈に便利なbean:writeですが、蓋を開ければ実にベーシックな処理をしているのが分かります。

普通にWebシステムなんかを作っているとこのbean:writeを多用しますが、
毎回この処理を経由しているわりには速いなと思いました。
まぁそんなもんなんですかね。

bean:write改めて便利ですね~!

■関連リンク
The Ja-Jakarta Site - The Ja-Jakarta Project: サブプロジェクト - Struts翻訳
WriteTag (Apache Struts API Documentation)

【関連する記事】

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Trackback:0

TrackBack URL for this entry
http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1086
Listed below are links to weblogs that reference
bean:writeのfilter属性をfalseにした場合の挙動を追う from HouseTect, JavaScripter Blog

Home > 技術 > bean:writeのfilter属性をfalseにした場合の挙動を追う

Tag cloud
Categories
月別アーカイブ
このブログについて
author:hisasann

description:フリーランスで仕事しているプログラマーです。
最近はJavaScript、Rails、Java(Struts+Spring)なんかをいろいろといじっています。
今やってみたいのはFlashやActionScriptかな。
また誕生して半年になる子供の成長を見守るパパでもあります。

日々の日記 :

他に運営しているブログ:

利用しているWebサービス :
最近のコメント
Powered by
Powered by
Movable Type 3.35

Page Top