- PR -

HTMLタグのサニタイズ処理

1
投稿者投稿内容
川上
常連さん
会議室デビュー日: 2006/08/18
投稿数: 20
お住まい・勤務地: 東京
投稿日時: 2008-05-22 19:46
こんにちは、VB.NET2005で開発を行っております。

HTMLタグのサニタイズをMicrosoftのホームページから見つけた
http://msdn.microsoft.com/ja-jp/library/cc438115.aspx
コード:
sstr_CheckValue = HttpUtility.HtmlEncode(sstr_CheckValue)

sstr_CheckValue = sstr_CheckValue.Replace("&lt;b&gt;", "<b>")
sstr_CheckValue = sstr_CheckValue.Replace("&lt;/b&gt;", "</b>")

で行いましたが、

<FONT xxxx>〜</FONT>などのタグが上手く出来ないで苦戦してます。

Regexクラスで効果的に置き換えが出来たら良いのですが、
なかなか上手くできませんでした(涙)
(使いこなせずに苦戦中です。。。)

このようなタグを有効にする良い方法がございましたら
教えて頂けますと非常に助かります。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-05-23 11:29
^<(?<tagname>[a-zA-Z]+) xxxx>〜</¥k<tagname>>$
こうですかね(¥は全角にしてあります)。大文字小文字を区別しないほうがいいのでIgnoreCaseで。

ただ、正規表現使って混乱するくらいならべたべたコード書いたほうがいいと思います。
シンプルに考えるための正規表現なので。
未記入
大ベテラン
会議室デビュー日: 2005/03/12
投稿数: 148
投稿日時: 2008-05-23 19:46
<FONT>を使えなくするのがサニタイズだからな。

<FONT xxxx>のxxxxに危険なコードがないのか気になる。
いろいろ細かいこと考えだすと大変な気がするが
サニタイズだから仕方ないのかな。

VB.NET2005を使ってないので具体的な方法はわかりません。
未記入
大ベテラン
会議室デビュー日: 2005/03/12
投稿数: 148
投稿日時: 2008-05-23 20:04
VBの書き方は知らんが正規表現をちょっと考えてみた。
/&lt;(font color="#[0-9]{6}")&gt;/i
置換後 "<$1>"

但し上記は<font color="#112233">系のサニタイズ解除に限る。
<font color="#112233" onclick="location='悪意のあるサイト'">みたいなのができそうなので限定してみた。

<font size='+2' color=red >とか複雑になってくると正規表現で簡単にできるかわからん。
1

スキルアップ/キャリアアップ(JOB@IT)