我试图阻止垃圾邮件发送者在表单的文本框中提交超链接。
表格要求用户输入他们的全名,电子邮件地址,电话号码,然后有一个框可供他们输入信息。电子邮件地址和电话号码会阻止超链接,因为验证指定电话只能由数字组成,并且电子邮件必须包含@
。
有没有办法使用Javascript结合ASP,如果它包含(http)
或(www)
,我可以停止提交的表单。
我尝试了以下内容但没有成功
<script type="text/javascript">
function Validate(x, y) {
str = (document.getElementById('Messagetxt')).value;
if (str.match(/(http)(www)([\<])([^\>]{1,})*([\>])/i) == null) {
y.IsValid = true;
}
else {
y.IsValid = false;
}
}
</script>
链接到文本框的自定义验证器。如果我输入http
,www
或html标记< >
,我试图阻止,表单提交但会显示错误页面。
答案 0 :(得分:1)
通常您遇到的不是黑客,而是机器人经过您的网站。我会建议采用一种更简单的方法(可能同样)来欺骗机器人填充隐藏的区域。
在表单上放置一个样式设置为display: none;
的文本框,以及一个完全不相关的ID,例如catchUnreal
。检查服务器端代码上catchUnreal
的值,看它是否有值。如果确实如此,机器人很可能已经填写了您的表格 - 请勿提交答案:
<input type="text" id="catchUnreal" class="dontDisplay" />
...
...
<%if Request.Form("catchUnreal")<>"" then
'Do my stuff
end if%>
(如果你抓住我的漂移)。
- 编辑 -
道歉 - 我没有正确阅读。
上面的过程也可以使用JavaScript来应用,只需使用JavaScript检查隐藏的框值:
if(document.getElementById("catchUnreal").value<>"") doProcessing();
- 编辑 -
另一个想法是使用服务器端命令server.HTMLEncode(string)
,它将删除任何不需要的标签编码。