防止ASP文本框验证上的超链接

时间:2014-07-21 11:33:20

标签: javascript validation asp-classic hyperlink spam

我试图阻止垃圾邮件发送者在表单的文本框中提交超链接。

表格要求用户输入他们的全名,电子邮件地址,电话号码,然后有一个框可供他们输入信息。电子邮件地址和电话号码会阻止超链接,因为验证指定电话只能由数字组成,并且电子邮件必须包含@

有没有办法使用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>

链接到文本框的自定义验证器。如果我输入httpwww或html标记< >,我试图阻止,表单提交但会显示错误页面。

1 个答案:

答案 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),它将删除任何不需要的标签编码。