- - PR -
エスケープするタイミングについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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("<", "<").Replace(">", ">") End If Next Next Next としてブレイクポイントを置いても読む前にエラーになってしまいます。 どなたかご指摘や良い方法などございましたらご教授いただければ幸いです。 _________________ | ||||
|
投稿日時: 2007-04-18 22:24
サーバーに送られた時点で例外が発生しているからですよ。
2.0 はよくわかりませんが、1.x ではページのプロパティで変更しました。 また、データーベースに対して < をエスケープする必要はありません。 タイミングは、よく考えておこなってください。 | ||||
|
投稿日時: 2007-04-18 22:40
早速のご返事ありがとうございます。
ページのプロパティですか。 ということはこの例外は無視するよう設定するのでしょうか? 自分でも十分検討してみるつもりではありますが、設定の方法を簡単でよいので教えていただければ幸いです。 タイミングについてももう少し考慮してみます。 _________________ | ||||
|
投稿日時: 2007-04-18 23:10
<pages validateRequest="false"/>
とweb.config に書くことでなんとか自己解決できました。 ありがとうございました。 _________________ | ||||
|
投稿日時: 2007-04-19 07:36
あと、どういう入力を弾くのかについては、マイクロソフトに問い合わせましたが、回答を得られませんでした。 _________________ | ||||
|
投稿日時: 2007-04-19 20:40
Jitta様、ご指摘ありがとうございます。
わざわざ問い合わせていただいたようで、まことに感謝しております。 昨日私も色々とASP.NETのエスケープについて調べてみたのですが、 フレームワークが処理してくれるからあまり心配は無いという情報がたびたび見られ、 なにをエスケープして何をエスケープしなければならないか迷っておりました。 私の開発環境は、VWD,VB.NET,DBはMySQLを使用しているのですが、何かエスケープについて注意すべき点などございましたら、ご教授いただければ幸いです。 | ||||
|
投稿日時: 2007-04-20 07:21
それぞれの出力先で、特殊な文字がないか調べる。それしかありません。 HTML に関しては、フレームワークで用意されています HtmlEncode / HtmlDecode _________________ | ||||
|
投稿日時: 2007-04-21 01:44
わかりました。
これから試してみようと思います。 色々と教えていただき大変勉強になりました。 ありがとうございました。 |