- PR -

エスケープするタイミングについて

投稿者投稿内容
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-04-18 22:02
たびたびお世話になっております。

現在私は、DetailsViewにバインドされたデータの更新の際、
ユーザーがTextBox等に入力した危険な可能性のある文字('<'など)を置換してからDB
に入れようとしているのですが、「<!--」とTextBoxに入力した際、どのイベントハンドラを使っても、置換される前にエラーになってしまいます。

ちなみに使用したイベントハンドラはDetailsViewのItemUpdatingや、PageのUnLoadなどです。

For Each r As TableRow In DetailsView.Rows
For Each tc As TableCell In r.Cells
For Each c As Control In tc.Controls
If TypeOf c Is TextBox Then
CType(c, TextBox).Text = CType(c, TextBox).Text.Replace("<", "&lt;").Replace(">", "&gt;")
End If
Next
Next
Next

としてブレイクポイントを置いても読む前にエラーになってしまいます。

どなたかご指摘や良い方法などございましたらご教授いただければ幸いです。
_________________
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-04-18 22:24
サーバーに送られた時点で例外が発生しているからですよ。
2.0 はよくわかりませんが、1.x ではページのプロパティで変更しました。
また、データーベースに対して < をエスケープする必要はありません。
タイミングは、よく考えておこなってください。
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-04-18 22:40
早速のご返事ありがとうございます。

ページのプロパティですか。
ということはこの例外は無視するよう設定するのでしょうか?
自分でも十分検討してみるつもりではありますが、設定の方法を簡単でよいので教えていただければ幸いです。

タイミングについてももう少し考慮してみます。
_________________
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-04-18 23:10
<pages validateRequest="false"/>

とweb.config に書くことでなんとか自己解決できました。

ありがとうございました。
_________________
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-04-19 07:36
引用:

hoshinoさんの書き込み (2007-04-18 23:10) より:
<pages validateRequest="false"/>

とweb.config に書くことでなんとか自己解決できました。

ありがとうございました。


出力するときは気をつけてくださいよ?

あと、どういう入力を弾くのかについては、マイクロソフトに問い合わせましたが、回答を得られませんでした。
_________________
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-04-19 20:40
Jitta様、ご指摘ありがとうございます。

わざわざ問い合わせていただいたようで、まことに感謝しております。

昨日私も色々とASP.NETのエスケープについて調べてみたのですが、
フレームワークが処理してくれるからあまり心配は無いという情報がたびたび見られ、
なにをエスケープして何をエスケープしなければならないか迷っておりました。

私の開発環境は、VWD,VB.NET,DBはMySQLを使用しているのですが、何かエスケープについて注意すべき点などございましたら、ご教授いただければ幸いです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-04-20 07:21
引用:

hoshinoさんの書き込み (2007-04-19 20:40) より:

私の開発環境は、VWD,VB.NET,DBはMySQLを使用しているのですが、何かエスケープについて注意すべき点などございましたら、ご教授いただければ幸いです。


それぞれの出力先で、特殊な文字がないか調べる。それしかありません。

HTML に関しては、フレームワークで用意されています HtmlEncode / HtmlDecode
_________________
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-04-21 01:44
わかりました。

これから試してみようと思います。

色々と教えていただき大変勉強になりました。
ありがとうございました。

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