Myページ
ホーム
コミュニティの人々
ソフトウェア
技術紹介
適用分野
Tyzohとは
ご意見お問い合わせ

V.S.A. III

[Secure-SBM:016] View セキュアフィルタ

こんにちは,五十嵐です.ブックマーク登録の続きを書くつもりでしたが,プログラムが多くなる前にクロスサイトスクリプティング (XSS) 対策をやっておきます.View::TT のフィルタの機能を使って, < や > などを "&lt;" や "&gt;" と出力するようにします.入力されたデータにスクリプトなどが含まれている場合の対策です.

フィルタの詳しい説明は 「Template::Manual::Filters - Standard filters」 に書かれています.もっとも必要と思われるのは "html" フィルタです.
引用:
Converts the characters '<', '>', '&' and '"' to '&lt;', '&gt;', '&amp;', and '&quot;' respectively, protecting them from being interpreted as representing HTML tags or entities.

これで,一応,XSS 対策がとれます.html_entity というフィルタもありますが,これを使うと日本語もすべてコードに変換されてしまいます.試してみましたが,decode 処理が必要になりますので,html フィルタを使うことにしました.entity については W3C の 「24 Character entity references in HTML 4」 を参照するとよいでしょう.

全ては書きませんが,データベースからの output を次のように変更します.
root/template/admin/listroles_center.tt
@@ -70,7 +70,7 @@
 <tr><td><button id="editrole_button[% role_v.role_id  %]">
        編集</button></td>
        <td><button id="deleterole_button[% role_v.role_id %]">
         削除</button></td>
        <td align="right">[% role_v.role_id %]</td>
-       <td>[% role_v.role_name %]</td>
+       <td>[% role_v.role_name | html %]</td>
 </tr>
 
 <tr>
ポイントは,データベースからの出力部分に,"html" というフィルタをかけていることです.これをおこなう前は,スクリプトがそのまま出力されてしまいましたが,これによってスクリプトの実行などを抑えることができます.しかし一方で,出力それぞれに perl のフィルタが呼ばれるので,実行速度が遅くなるという欠点があります.

2007/03/26,27 記

注: ブログの内容は,開発途中で記述しているため,現在の実装とは異なる場合があります.

参考:

Keyword: Perl Catalyst Secure-SBM SSBM セキュア・ソーシャル・ブックマーク

 

カテゴリ:SBM , 開発日記

タグ:

いかちょー (2007-06-26 05:20) | コメント(0)| トラックバック(3)

トラックバック(3)

トラックバックURL:

コメント

コメントを投稿

名前

電子メール

URL

ログイン情報を記憶

コメント

プロフィール

いかちょー

いかちょーこと五十嵐智です。
情報セキュリティ分野に興味があります。
一応、CISSP ホルダー。

SF者です。どうぞよろしく。

プロフィール詳細 (Google プロフィール)

RSSフィード

コミュニティの人々 | ソフトウェア | 技術紹介 | 適用分野 | Tyzohとは | ご意見お問い合わせ

Copyright (C) 2004-2011 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source