正则表达式将黑名单列入黑名单

时间:2016-02-20 09:15:23

标签: asp.net regex validation-controls

应该使用什么正则表达式将在ASP.Net中导致以下错误的字符序列列入黑名单 - “从客户端检测到一个潜在危险的Request.Form值”。 (例如< br>,< hi>,< a>等..)

我需要使用 asp.net正则表达式验证控件黑名单那些会导致此错误的字符序列。

例如,如果我输入123<嗨> ,有效< abc>等等。我需要验证失败。

PS:我间隔了< br>因为它没有在问题中正确显示它,但实际上它应该没有<或者>以及它们之间的字符串

2 个答案:

答案 0 :(得分:0)

对于您的示例,您需要关注正则表达式:"< br> |<嗨> |< a>"。如果您需要将任何其他令牌列入黑名单,请使用下一个" |< ?? >"序列。 签名|在正则表达式中意味着将组与OR条件匹配,因此示例意味着实际匹配< br>或者<嗨>或者< a>。

如果您只需要通用正则表达式,那么任何可能的HTML标记都会失败 "<?*>"应该做的工作。但是如果对于<>之间的任何序列,这将失败。不仅支持有效的HTML标签。

如果您想测试其他一些文本和正则表达式或了解更多信息,我建议使用两个非常好的网站:

http://www.regexr.com/

https://regex101.com/

答案 1 :(得分:0)

这是某天某人快速又肮脏的解决方案

添加jQuery库

 $("input").bind("paste", function (e) {
      var pastedData = e.originalEvent.clipboardData.getData('text');
      $(this).val(Encode(pastedData));
      e.preventDefault();
  });

function Encode(str)
{
       return str.replace(/(<)(\S+)(>)/g, '$2 ');
}