【问题标题】:Prevent Hyperlink on ASP text box validation防止 ASP 文本框验证上的超链接
【发布时间】:2014-07-21 11:33:19
【问题描述】:

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

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

如果表单包含(http)(www),有没有一种方法结合使用 Javascript 和 ASP 可以阻止提交。

我尝试了以下但没有成功

<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 标签&lt; &gt;(我试图阻止)时,表单提交但显示错误页面。

【问题讨论】:

  • 为什么不开始使用验证码?
  • 然后回答——是的,有可能,即使使用您的代码。在
    添加 onsubmit=return 在 javascript 中验证更改 Y.ISVALUD=true 为 return(true) 和 Y.ISVALID=FALSE 为 return(false)
  • 如果您没有验证码,那么 JavaScript 验证可能不会有太大帮助。如果没有验证码,您需要使用服务器端验证。您还提到了自定义验证器 - 这是 Classic ASP 还是 ASP.NET?

标签: javascript validation asp-classic hyperlink spam


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

【讨论】:

    猜你喜欢
    • 2013-05-01
    • 1970-01-01
    • 2011-05-31
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多