如何编写正则表达式(使用 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 在服务器端实现全面验证。
谢谢你。