C# 页面加载前“潜在危险的请求。从客户端检测到表单值”

C# 页面加载前“潜在危险的请求。从客户端检测到表单值”,c#,asp.net,application-error,C#,Asp.net,Application Error,我知道这已经被问了很多次了,但我真的很努力尝试了很多不同的潜在解决方案 我有一个c ASP.net网站页面。那里有一个带有提交按钮的表单。所有代码都在代码隐藏页中 我们没有收到任何通过表单提交的垃圾邮件,因为我有一个捕获元素。然而,垃圾邮件机器人正在扫描页面,获取字段名并直接发布到页面 我之所以知道这一点,是因为我在global.asax中将应用程序_错误设置为通过电子邮件向我报告任何错误 我尝试过更改字段名,但他们只是选择了新字段 我已经在web.config中输入了 在我的页面中,我有Ena

我知道这已经被问了很多次了,但我真的很努力尝试了很多不同的潜在解决方案

我有一个c ASP.net网站页面。那里有一个带有提交按钮的表单。所有代码都在代码隐藏页中

我们没有收到任何通过表单提交的垃圾邮件,因为我有一个捕获元素。然而,垃圾邮件机器人正在扫描页面,获取字段名并直接发布到页面

我之所以知道这一点,是因为我在global.asax中将应用程序_错误设置为通过电子邮件向我报告任何错误

我尝试过更改字段名,但他们只是选择了新字段

我已经在web.config中输入了

在我的页面中,我有EnableEventValidation=False

但是——正如我所说,问题不在于允许在帖子数据中使用html,而是试图阻止垃圾邮件机器人直接提交到页面。我想它是在页面加载之前被触发的

我的点子都快用完了!我在防火墙上每隔10分钟封锁一次ip范围。我不能再这样做了

谢谢你的帮助

你试过蜜罐田吗

在标记中创建输入字段,但不要在页面上显示它。您可以使用css或其他方法对用户隐藏它,只要它仍然显示在您的页面源代码中

然后,在代码隐藏中,在处理任何内容之前检查字段是否为空。你知道你的真正用户看不到该字段,也不能在其中输入任何内容。因此,如果填写了该字段,您就知道它来自扫描页面的机器人,您可以忽略所有其他内容

这个想法是,垃圾邮件机器人无法抗拒填写字段,但大多数机器人不够聪明,无法确定该字段在浏览器中是否实际可见,因此,你可以通过填写一些不应该填写的内容来欺骗他们,让他们暴露身份

FWIW,我个人使用过这种方法,取得了不错的成功

但是,如果ASP拒绝提交并导致错误,则是另一个问题。您是否需要合法用户才能在字段中提交标记?如果您不这样做,那么框架通过保护您的站点实际上是在做正确的事情。在这种情况下,我只需检查应用程序错误方法中的特定错误并忽略它。

您尝试过蜜罐字段吗

在标记中创建输入字段,但不要在页面上显示它。您可以使用css或其他方法对用户隐藏它,只要它仍然显示在您的页面源代码中

然后,在代码隐藏中,在处理任何内容之前检查字段是否为空。你知道你的真正用户看不到该字段,也不能在其中输入任何内容。因此,如果填写了该字段,您就知道它来自扫描页面的机器人,您可以忽略所有其他内容

这个想法是,垃圾邮件机器人无法抗拒填写字段,但大多数机器人不够聪明,无法确定该字段在浏览器中是否实际可见,因此,你可以通过填写一些不应该填写的内容来欺骗他们,让他们暴露身份

FWIW,我个人使用过这种方法,取得了不错的成功

但是,如果ASP拒绝提交并导致错误,则是另一个问题。您是否需要合法用户才能在字段中提交标记?如果您不这样做,那么框架通过保护您的站点实际上是在做正确的事情。在这种情况下,我只需检查应用程序错误方法中的特定错误并忽略它。

这就是您要做的:忽略它。阻止IP只会让你在圈子里跑来跑去,最终是浪费时间

如果垃圾邮件实际上没有被提交,那么你真的没有问题。框架正在做它应该做的事情

坦白地说,我不会去调查这样的错误消息,除非它阻止了实际用户做他们需要做的事情

如果您真的只想让错误消失,则需要执行以下操作:

设置EnableEventValidation=true 设置ValidateRequest=false EnableEventValidate告诉.net查看帖子是否来自于单击它所呈现的控件。这将有助于防止直邮

ValidateRequest告诉.net是否测试html和其他危险字符的输入。关闭它将停止您的错误消息

如果你只是想让垃圾邮件发送者停止攻击你的网站:关闭网站。因为这是让垃圾邮件发送者远离它的唯一可靠方法。

这就是你要做的:忽略它。阻止IP只会让你在圈子里跑来跑去,最终是浪费时间

如果垃圾邮件实际上没有被提交,那么你真的没有问题。框架正在做它应该做的事情

坦率地说,我不会费心调查这样的错误消息,除非它阻止了实际使用 不去做他们需要做的事

如果您真的只想让错误消失,则需要执行以下操作:

设置EnableEventValidation=true 设置ValidateRequest=false EnableEventValidate告诉.net查看帖子是否来自于单击它所呈现的控件。这将有助于防止直邮

ValidateRequest告诉.net是否测试html和其他危险字符的输入。关闭它将停止您的错误消息


如果你只是想让垃圾邮件发送者停止攻击你的网站:关闭网站。因为这是阻止垃圾邮件发送者进入的唯一可靠方法。

这不应该是ValidateRequest而不是EnableEventValidation吗?这不应该是ValidateRequest而不是EnableEventValidation吗?同意。你永远无法完全阻止垃圾邮件发送者,因为他们中的一些甚至不是机器人。我听过一些报道,在发展中国家,人们每天从垃圾邮件网站上获得几便士的报酬。这几乎是不可能被打败的。我同意。你永远无法完全阻止垃圾邮件发送者,因为他们中的一些甚至不是机器人。我听过一些报道,在发展中国家,人们每天从垃圾邮件网站上获得几便士的报酬。这几乎是不可能打败的。