1

文字「<」と「>」がないかどうかを確認するための正規表現(C#を使用)を作成するにはどうすればよいですか?

テスト用にコンソールでコードを作成しました。

Regex reg = new Regex(@"^(?!(.*<+.*)|(.*>+.*))");
string[] array = { "any text", "$baks> fgg", "att <br /> dfsdf", "<<script />> sdfsdf", "@##%%^^&&" };
foreach (var str in array)
{
    if (reg.IsMatch(str))
         Console.WriteLine("OK:\t\t{0}", str);
    else
         Console.WriteLine("XSS ATTACK:\t{0}", str);
}

結果は次のとおりです。

OK:             any text
XSS ATTACK:     $baks> fgg
XSS ATTACK:     att <br /> dfsdf
XSS ATTACK:     <<script />> sdfsdf
OK:             @##%%^^&&

しかし、この式を次のようなプロパティの検証に使用すると、

[RegularExpression(@"^(?!(.*<+.*)|(.*>+.*))")]

それはどんな言葉でも発火します。なんで?正しい表現の書き方は?

これは、クライアントでの単純な検証です。AntiXSSを使用してサーバー側で完全な検証を実現しました。

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

4

1 に答える 1