与this question类似,但我不太在乎字符是否会导致错误触发。我更加好奇我可以调用什么方法来检查自己,如果当前字符串会触发上述错误消息。如何检查字符串是否会触发“检测到有潜在危险的Request.Form值...”错误
为了给出一些背景知识,我在创建随机密码时,用户忘记了他们的需要重置。不幸的是,最近随机密码生成器“偶然地”在&#
中创建了一个。当用户试图用它登录时,这导致页面中断。
正如在本主题的大量帖子中提到的,可以使用ValidateRequest=false
(或用于.NET 4.0的<httpRuntime requestValidationMode="2.0" />
)关闭这些漏洞的.NET检查,但我没有看到任何理由失去这个额外的层当我是首先创建字符串的人的安全。并且简单地告诉随机生成器在不完整列表(<
,&#
等)上重新随机化看起来不是最干净的解决方案,所以我想用同样的方法来检查.NET正在使用的方法。
微软对什么漏洞存在疑问的解释以及如何防范这些漏洞here。
This guy有关在使用Reflector进行挖掘后找到名为IsDangerousString
的函数的讨论,但我无法找到此函数来使用它。另外他指的是.NET 1.1,我正在使用.NET 3.5
有趣的问题,但我不明白了一个道理,为什么你会包括这些不起眼的角色。我可能会使用RandomNumberGenerator类填充一个字节[],然后使用z-base32编码器将字节编码为一个字符串。 – Shelakel 2012-07-06 22:33:20
你知道你想要的“漏洞”字符,为什么不能在发布之前对它们进行编码,然后html将它们解码回 – HatSoft 2012-07-06 22:35:16
@Shelakel当然,还有很多其他方法可以生成随机密码。然而不幸的是,我们坚持需要用这个项目的密码完成4个字符规则(小写字母,大写字母,数字,特殊字符)中的所有4个。当然,我可以删除违规的“模糊”字符,但由于规范不是很清楚,我想使用系统要检查的相同功能。 – Mercurybullet 2012-07-06 23:39:39