PDA

View Full Version : gridデータのサニタイジング



ak_ext
9 Mar 2009, 1:34 AM
jspの中にグリッドを埋め込んで
使おうと思っているのですが、グリッドの表示データを、
JSTLの<C:out のようにサニタイジングするには、
どのようにするのが、一番簡易なのでしょうか・・

思いついたのはDBからデータをとってきた後、グリッドに入れる前に
共通処理(jsの中)でサニタイジングする事を考えています。

amanoman
9 Mar 2009, 2:15 AM
リスクのある文字を表示したい場合の関数。
Ext.util.Format.htmlEncode
リスクのある文字を取り除く場合の関数。
Ext.util.Format.stripTags

ちなみに、gridに表示する場合は、columnModelのrenderに上記の関数をセットするのが簡単だと思います。
columnModelのサンプル


var cm=new Ext.grid.ColumnModel([
{
header:'会社名',
dataIndex:'Company',
width:200,
render:Ext.util.Format.htmlEncode
},{
header:'電話番号',
dataIndex:'tel',
width:150
}

ak_ext
9 Mar 2009, 10:20 PM
htmlEncode は「<」、「>」、「&」、「"」を変換できるのですね。
c:outタグは「<」、「>」、「&」、「'」、「"」が対象となっているのですが、
シングルクォートは別途replaceなどで置換してあげないとダメそうですね。。
storeに入れる時が良いのでしょうか・・

ak_ext
10 Mar 2009, 1:49 AM
htmlencodeでサニタイジングのサンプルを作ったのですが、
1行1列目のデータは><がそのまま出ているのですが、
サニタイジングされているのでしょうか。。。

ak_ext
10 Mar 2009, 4:20 AM
ただデータにリンクを張れなくなってしまいました。
これはhtmlencodeした場合はしょうがないですよね。

yuki
10 Mar 2009, 6:12 AM
ただデータにリンクを張れなくなってしまいました。
これはhtmlencodeした場合はしょうがないですよね。

独自のrendererを用意して、その中でhtmlencodeしたり、htmlの加工をすれば基本的に何でもできますよ。