- - PR -
「入力の不適切な部分を削除する」
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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("^([<>""'%;()&])$") お解かりの方おりましたら教えてください。 | ||||||||
|
投稿日時: 2006-02-10 17:19
とはどのような状態でしょうか? 全く削除されないのか、一部削除されない文字があるのか、これでは分かりません。 _________________ 常在線上 [ メッセージ編集済み 編集者: Yam 編集日時 2006-02-10 17:24 ] | ||||||||
|
投稿日時: 2006-02-10 17:35
失礼しました。 まったく削除されません。 「a%」がそのまま「a%」で帰ってきます。 | ||||||||
|
投稿日時: 2006-02-10 17:58
えーそもそものC#のサンプルでも削除できません。^^;
正規表現に問題があります。 _________________ 音速の定時退社! | ||||||||
|
投稿日時: 2006-02-10 18:13
すみません。正規表現に問題があるとは、どういう意味でしょうか? (正規表現があまり解ってないです) | ||||||||
|
投稿日時: 2006-02-10 18:26
Regx("^([<>""'%;()&])$")の()の中の文字列部分です。 正規表現は知らないと困りますのでぜひ調べて下さい。 この辺が分かりやすいかもしれません _________________ 音速の定時退社! | ||||||||
|
投稿日時: 2006-02-10 18:28
それなら、まずは正規表現を勉強しましょう。 そのあと、自分なりに正規表現を修正してから、もう一度ここにそのコードを書き込みましょう。 でないと、単に回答者の皆さんによけいな手間をかけさせるだけです。 | ||||||||
|
投稿日時: 2006-02-10 19:42
大変失礼しました。
正規表現について、あまり調べないまま投稿してしまい反省しております。 おかげ様で大分理解できました。 取り合えずRegx("[<>""'%;()&]")としたら、[]内の文字は削除され、意図した結果が返ってきました。 が、サンプルのRegex(@"^([<>""'%;()&])$")の意味が、まだ理解できません。 どういう事でしょう? [ メッセージ編集済み 編集者: お獅子 編集日時 2006-02-10 19:42 ] |