机器人在我的网站上发送垃圾邮件,每隔几秒就会产生一个“有潜在危险的请求......”错误。当某些字符(如“<”)在某些元素(如表单字段)中回发时会生成这些错误。这意味着它们需要在客户端处理,否则在任何服务器端验证有机会运行之前都会产生“黄屏”错误。当网站产生并出现错误时,我会将其记录在数据库中并发送电子邮件,因此我已经被这个机器人生成的错误所超越。
到目前为止我所做的一切
textarea
,如果已修改,则使用JavaScript删除“提交”按钮的OnClick
事件。对此进行检查的是onchange
的{{1}}事件,以及提交按钮的textarea
事件。OnClientClick
事件。OnClick
字段替换为ASP.NET TextBox字段(呈现为textarea
)。这些方法似乎暂时都有效,但现在发生的事情是机器人正在注入虚假的表单字段。以下是我们的ELMAH错误报告生成的摘录:
<input type="text" />
你可以看到它正在注入<item name="ctl00$...txtMyTextBox"><value string="..." />
<item name="__VIEWSTATE"><value string="..." />
<item name="method="><value string="..." />
,它不是表单的一部分,然后以某种方式阻止客户端验证的其余部分,并允许提交按钮的服务器端"method="
事件要运行,导致“危险”字符包含在帖子中,产生错误。
“有潜在危险的请求......”错误已有详细记录,我本人并不打算对此进行故障排除。我已经知道它可以被禁用,但我不想这样做。我想集中讨论防止僵尸程序发送垃圾邮件的根本问题,具体来说,当它将伪字段注入表单时如何处理情况。
最后,我应该注意到我们使用的ELMAH错误处理是在OnClick
文件中的Application_Error(...)
之前运行的,所以在那里处理它可能不是一个选项。