- PR -

「入力の不適切な部分を削除する」

投稿者投稿内容
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-10 16:34
お世話になっております。

ASP.NETにて

XSS対策の一部として「入力の不適当な部分を削除する」を実装しようとしております。
MSDNのサイト(http://www.microsoft.com/japan/msdn/security/guidance/secmod83.mspx#EGGAC)を参考にしたのですが、うまく削除されません。
C#のコードをVBに書き直したのですが間違っているのでしょうか?C#はよく解りません。

--例にあったコード(C#)ここから--
private string SanitizeInput(string input)
{
Regex badCharReplace = new Regex(@"^([<>""'%;()&])$");
string goodChars = badCharReplace.Replace(input, "");
return goodChars;
}
--例にあったコード(C#)ここまで--

--これをVBに直したコード。ここから--
Public Function SanitizeInput(ByVal Input As String) As Boolean
Dim badCharReplace As Regex = New Regex("^([<>""'%;()&])$")
Dim goodChars As String = badCharReplace.Replace(Input, "")
Return goodChars
End Function
--これをVBに直したコード。ここまで--

一箇所エラーになるので下記のようにしました。
C#→ Regex(@"^([<>""'%;()&])$")
VB→ Regex("^([<>""'%;()&])$")

お解かりの方おりましたら教えてください。
Yam
大ベテラン
会議室デビュー日: 2003/09/13
投稿数: 179
お住まい・勤務地: だんじり祭りの地
投稿日時: 2006-02-10 17:19
引用:

お獅子さんの書き込み (2006-02-10 16:34) より:
MSDNのサイト(http://www.microsoft.com/japan/msdn/security/guidance/secmod83.mspx#EGGAC)を参考にしたのですが、うまく削除されません。


とはどのような状態でしょうか?
全く削除されないのか、一部削除されない文字があるのか、これでは分かりません。




_________________
常在線上

[ メッセージ編集済み 編集者: Yam 編集日時 2006-02-10 17:24 ]
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-10 17:35
引用:

Yamさんの書き込み (2006-02-10 17:19) より:
全く削除されないのか、一部削除されない文字があるのか、これでは分かりません。


失礼しました。
まったく削除されません。

「a%」がそのまま「a%」で帰ってきます。
Yam
大ベテラン
会議室デビュー日: 2003/09/13
投稿数: 179
お住まい・勤務地: だんじり祭りの地
投稿日時: 2006-02-10 17:58
えーそもそものC#のサンプルでも削除できません。^^;
正規表現に問題があります。

_________________
音速の定時退社!
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-10 18:13
引用:

Yamさんの書き込み (2006-02-10 17:58) より:
えーそもそものC#のサンプルでも削除できません。^^;
正規表現に問題があります。



すみません。正規表現に問題があるとは、どういう意味でしょうか?
(正規表現があまり解ってないです)

Yam
大ベテラン
会議室デビュー日: 2003/09/13
投稿数: 179
お住まい・勤務地: だんじり祭りの地
投稿日時: 2006-02-10 18:26
引用:

お獅子さんの書き込み (2006-02-10 18:13) より:
すみません。正規表現に問題があるとは、どういう意味でしょうか?
(正規表現があまり解ってないです)


Regx("^([<>""'%;()&])$")の()の中の文字列部分です。
正規表現は知らないと困りますのでぜひ調べて下さい。
この辺が分かりやすいかもしれません

_________________
音速の定時退社!
まいるどきゃっと
大ベテラン
会議室デビュー日: 2004/08/12
投稿数: 135
お住まい・勤務地: 群馬
投稿日時: 2006-02-10 18:28
引用:

お獅子さんの書き込み (2006-02-10 18:13) より:
引用:

Yamさんの書き込み (2006-02-10 17:58) より:
えーそもそものC#のサンプルでも削除できません。^^;
正規表現に問題があります。



すみません。正規表現に問題があるとは、どういう意味でしょうか?
(正規表現があまり解ってないです)



それなら、まずは正規表現を勉強しましょう。
そのあと、自分なりに正規表現を修正してから、もう一度ここにそのコードを書き込みましょう。

でないと、単に回答者の皆さんによけいな手間をかけさせるだけです。
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-10 19:42
大変失礼しました。
正規表現について、あまり調べないまま投稿してしまい反省しております。

おかげ様で大分理解できました。
取り合えずRegx("[<>""'%;()&]")としたら、[]内の文字は削除され、意図した結果が返ってきました。

が、サンプルのRegex(@"^([<>""'%;()&])$")の意味が、まだ理解できません。
どういう事でしょう?

[ メッセージ編集済み 編集者: お獅子 編集日時 2006-02-10 19:42 ]

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