- PR -

TextBoxでのタグ文字のチェック方法(ASP.NET)

1
投稿者投稿内容
NAO
ベテラン
会議室デビュー日: 2003/09/24
投稿数: 51
投稿日時: 2004-01-23 15:38
現在、テキストボックスのエラーチェックを行なっているんですが、
"<br>"などというタグ文字列を登録しようとすると、
「危険な可能性のある Request.Form 値がクライアントから検出されました。」
とエラーになっていまいます。

クライアント側でサーバー送信前にチェックする方法は確認しているのですが、
サーバー側でチェックを行なう方法が解りません。

どうしてもサーバー側で行ないたいのですが、
それは無理なことなのでしょうか?
ご教授のほど宜しくお願いいたいます。
ロンロン
ベテラン
会議室デビュー日: 2004/01/08
投稿数: 58
お住まい・勤務地: TOKYO
投稿日時: 2004-01-23 16:00
こんにちわ。

エラーページに
>>構成セクションの validateRequest=false を設定することによって
>>要求の検証を無効にで>>きます。
>>しかしこの場合、
>>アプリケーションですべての入力を明示的に確認することをお勧めします。
と表示されますよね。
上記記述の対応で可能ですよ。


<%@ Page language="c#" validateRequest=false (....以下略) %>


ただし、タグ文字の通過を許すということは、
JSなんかも自由にテキストボックス等に入力出来てしまうので、
そのあたりの対応が必要になりそうですよね。

安直だと、"<script" の文字列はチェックではじくとかですかねw
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-01-23 16:02
Page.Errorイベントで拾って、任意のエラーメッセージ用HTMLを生成するという事は可能です。
NAO
ベテラン
会議室デビュー日: 2003/09/24
投稿数: 51
投稿日時: 2004-01-23 16:29
ご回答ありがとうございます。

<%@ Page language="c#" validateRequest=false (....以下略) %>
を使用して、再度構築してみたいと思います。
#確かにJavaScript文字列は注意しないといけませんね。

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


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-23 16:41
引用:

NAOさんの書き込み (2004-01-23 16:29) より:

#確かにJavaScript文字列は注意しないといけませんね。


 ActiveXオブジェクトも危険。
 また、HTML要素(というか、これからはXHTML?)は追加されるおそれがあります。そのため、"<[\w]"をはじいていると思われます。
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-02-16 17:50
こんにちは。
NAOさんは解決されているようですが、質問させて下さい。
私はNAL-6295さんの方法でエラーページを設計しようと思っています。
セッションにエラー内容を格納して、エラーページに遷移・・・
という方法を考えたのですが、フレーム分割されたままエラー画面が
表示されてしまいました。
そこで、JavaScriptを使ったらどうだろうかと以下のコードを試したのですが、
作成したエラー画面には遷移せず、通常のエラー画面が表示されてしまいます。
Page_ErrorでJavaScriptは使えないということでしょうか?
使えないのなら、対処方法はあるでしょうか?
どなたかご教授よろしくお願いします。

Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Error
Dim objErr As Exception = Server.GetLastError.GetBaseException

Session("ErrMsg") = "ページエラーが発生しました"
Session("Explain") = objErr.Message.ToString
Session("Method") = Request.Url.ToString
'エラー画面表示
Dim scriptstring As New StringBuilder
With scriptstring
.Append("<script language='javascript'>")
.Append("parent.top.location.href='ErrFound.aspx'")
.Append("</script>")
End With
If Not IsClientScriptBlockRegistered("clientscript") Then
RegisterClientScriptBlock("clientsclipt", scriptstring.ToString)
End If
End Sub
1

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