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

Prevent Hyperlink on ASP text box validation

本文关键字:验证 超链接 文本 ASP      更新时间:2023-09-26

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

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

是否有一种方法使用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标记< >(我试图阻止)时,表单提交但呈现错误页面。

通常你遇到的不是黑客,而是通过你的网站的机器人。我推荐一种更简单的方法(也许也是)来欺骗机器人填充一个隐藏的字段。

在表单上放置一个样式设置为display: none;的文本框,以及一个完全不相关的id,例如catchUnreal。在服务器端代码中检查catchUnreal的值,看看它是否有值。如果是,很可能是机器人已经完成了您的表单-不要提交答案:
<input type="text" id="catchUnreal" class="dontDisplay" />
...
...
<%if Request.Form("catchUnreal")<>"" then
    'Do my stuff
end if%>

(如果你明白我的意思)。

—EDIT—

抱歉-我没读对。

上面的过程也可以使用JavaScript应用,只需使用JavaScript检查隐藏框的值:

if(document.getElementById("catchUnreal").value<>"") doProcessing();

——编辑——

另一个想法是使用服务器端命令server.HTMLEncode(string),它将删除任何不需要的标记编码。