隐藏的领域CAPTCHA足够安全吗?

时间:2011-12-07 19:42:56

标签: php mysql html security captcha

在我的网站上,我并不想使用那些扭曲的文本CAPTCHAS。所以我决定去寻找一个隐藏的现场验证码。

e.g。

<form>

<input type="text" name="surprise" value="" style="display: none; visibility: hidden;"/>

</form>

真实用户不会看到这个字段,因此他们会将其留空,垃圾邮件机器人会将其填入。然后我可以检查“惊喜”字段是否为空,如果它是空的,则继续填充。

但我现在问这种方法,我觉得它不太安全。所以你能建议吗?这样安全吗?还有其他任何CAPTCHA方法,不要求用户从图像中输入文字吗?

6 个答案:

答案 0 :(得分:7)

你在这里有什么可能有助于阻止垃圾邮件,但它远非完整的解决方案。一个合适的CAPTCHA会让你更进一步,但根据你的需求和使用场景,你的解决方案可能就足够了。

答案 1 :(得分:5)

如果你这样做的话,我建议使用更好的spambot诱饵 为“名称”属性设置关键字,例如“城市”或“电话”,垃圾邮件可以识别并知道他们可以填写哪种文字。这将增加您的机会。

答案 2 :(得分:5)

ceejayozhere是真的。

我喜欢和其他方法一起执行此操作,例如:

  • 在2秒内提交表单时,请拒绝该请求。
  • 通过ajax进行整个验证 - 这需要启用JavaScript。

首先,我们在表单字段中添加一个额外的输入:

<input class="not_in_my_house" type="password" name="password">

我将我的真实密码字段命名为“pass”

撒上一点css魔法:

.not_in_my_house {
    position: absolute; /* don't bother other elements on the page */
    width: 0; /* small */
    height: 0; /* very small */
    margin: 0; /* tiny */
    padding: 0; /* very tiny */
    border: 0; /* tada */
}

您也可以尝试以下方法,但我觉得这样做很脏 - 这取决于您。

.not_in_my_house {
    position: absolute;
    left: -9999em;
}

最后,每当提交填写了该表单字段的帖子时,您都会拒绝该请求,甚至可能禁止该IP。

if(!empty($_POST['password'])){
    echo 'Nope, not in my house.';
}

答案 3 :(得分:4)

大多数现代垃圾邮件都会忽略隐藏字段。

答案 4 :(得分:2)

还有其他类型的验证码要求您回答简单的数学问题,或其他要求您解决简单的单词拼图的问题。主要目的是区分计算机和人。所以你可以尝试很多想法。另一个可能是:向用户显示几个不同的颜色框,并要求他们点击蓝色。他们都有不同程度的安全性和不同的利弊,只有你知道你的情况

答案 5 :(得分:2)

机器人将填补隐藏的字段。但是你应该使用css文件隐藏它,在输入HTML中执行它仍然可以检测它是否是隐藏字段。