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

Ilj*_*lja 5 html php mysql security captcha

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

例如

<form>

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

</form>
Run Code Online (Sandbox Code Playgroud)

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

但我现在问这种方法,我不认为它是非常安全的.所以你能建议吗?这样安全吗?有没有其他CAPTCHA方法,不要求用户从图像输入文字?

Nat*_*lor 7

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


Mr *_*ter 5

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


Emr*_*mre 5

什么ceejayoz这里是非常真实的。

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

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

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

<input class="not_in_my_house" type="password" name="password">
Run Code Online (Sandbox Code Playgroud)

我将我的真实密码字段命名为“ 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 */
}
Run Code Online (Sandbox Code Playgroud)

您也可以尝试以下方法,但是我觉得这样做很麻烦-由您决定。

.not_in_my_house {
    position: absolute;
    left: -9999em;
}
Run Code Online (Sandbox Code Playgroud)

最后,只要提交的帖子中填写了该表单字段,您就拒绝该请求,甚至可能禁止IP。

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