相关疑难解决方法(0)

我如何识别邪恶的正则表达式?

我最近意识到正则表达式拒绝服务攻击,并决定在我的代码库中找到所谓的"邪恶"正则表达式模式 - 或者至少在用户输入上使用它们.上面的OWASP链接维基百科提供的示例很有帮助,但他们并没有很好地用简单的术语解释问题.

来自维基百科的邪恶正则表达式的描述:

  • 正则表达式将重复("+","*")应用于复杂的子表达式;
  • 对于重复的子表达式,存在一个匹配,它也是另一个有效匹配的后缀.

通过示例,再次来自维基百科:

  • (a+)+
  • ([a-zA-Z]+)*
  • (a|aa)+
  • (a|a?)+
  • (.*a){x} 对于x> 10

这是一个没有更简单解释的问题吗?我正在寻找能够在编写正则表达式时更容易避免这个问题,或者在现有代码库中找到它们的东西.

regex

65
推荐指数
5
解决办法
2万
查看次数

DataAnnotaion在客户端失败(冻结)?

我有ASP.NET MVC网页,我使用DataAnnotation来验证客户端的表单.其中一个视图类具有如下属性:

[StringLength(100, MinimumLength = 3, ErrorMessage = "Länken måste vara mellan 3 och 100 tecken lång")]
[Display(Name = "Länk")]
[RegularExpression(@"^(http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?)?$", ErrorMessage="Länkgen är inte giltlig")]
        public string Url { get; set; }
Run Code Online (Sandbox Code Playgroud)

在视图中,我将此代码用于属性:

@Html.LabelFor(c => c.Url, true)
@Html.TextBoxFor(c => c.Url, new { @class = "tb1", @Style = "width:400px;" })
@Html.ValidationMessageFor(model => model.Url)
Run Code Online (Sandbox Code Playgroud)

粘贴到这样的URL时:

http://95rockfm.com/best-voicemail-giving-play-by-play-of-car-accident/

网页将锁定,我无法在wepage上做任何事情.如果我将其粘贴到:

http://95rockfm.com/best-voicemail-giving-play-by-play-of-car-accident

它工作得很好.

这些javascript文件包含在网页的底部:

<script type="text/javascript" src="/Scripts/jquery.qtip.min.js"></script>
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="/Scripts/jquery-ui-1.8.20.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

完全相同的问题同时适用于IE和Chrome.然而,IE将回来并说一个脚本花了很长时间,一个按钮停止脚本.但是当切换输入控件时,脚本将再次运行并查看网页.

我没有使用任何自定义的东西,为什么我得到这个?

regex asp.net asp.net-mvc data-annotations

5
推荐指数
1
解决办法
238
查看次数

标签 统计

regex ×2

asp.net ×1

asp.net-mvc ×1

data-annotations ×1