【问题标题】:Generate Random number for WordPress for Human Check为 WordPress 生成随机数以供人工检查
【发布时间】:2018-07-18 14:53:40
【问题描述】:

我有一个自定义表单,并希望通过要求访问者输入给定的随机数进行验证,通过人工检查来确保表单提交的安全。

下面是生成随机数的函数:

function random_number() {
    $rand1 = rand(10, 100);
    $rand2 = rand(10, 100);
    $randnum = $rand1 * $rand2;
return $randnum;
}

以下是人工检查的验证表

<label for="humanCheck">
    <?php echo random_number(); ?>
</label>
<input id="humanCheck" type="number" name="message_human" placeholder="Enter above number">

以下是验证码,用于检查访问者是否输入了给定的随机数:

$randomnumbercheck = echo random_number();
if (!$human == 0) {
if ($human != $randomnumbercheck) {
    response("error", $not_human); //not human!
} else {
/// form submission
}

问题是验证表单和验证代码中random_number() 函数生成的随机数不同,并且始终是错误验证。

【问题讨论】:

  • 我认为这种身份验证可以轻松绕过。因为数字实际上是在上下文中给出的,并且可以被机器人读取并重新输入!我建议不要使用这种方法,因为它对以某种方式使机器人难以阅读的数字没有太大作用!

标签: php wordpress random


【解决方案1】:

使用上下文中给出的数字进行身份验证不是一个好方法!

仅使用确认号来安全地进行身份验证并不是那么简单!你必须在服务器端确认它。但在这个例子中,用户可以重复发送和重复发送相同的数据,它会被确认!为了防止这种情况,您必须创建一个表并在其中插入记录。顺便说一句,这只是您想要的代码:

<?php

function random_number() {
    $rand1 = rand(10, 100);
    $rand2 = rand(10, 100);
    $randnum = $rand1 * $rand2;
return $randnum;
}


if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $randomnumbercheck =$_POST['hidden'];
   $human=$_POST['message_human'];

if ($human !== $randomnumbercheck) {
    echo "error";
} else {
echo "Correct! <br/>";
}




}else{echo "no post";}
$generatednumber=random_number();
?>
<label for="humanCheck">
   <?=$generatednumber;?>
</label>
<form action="" method="POST">
<input id="humanCheck" type="input" name="message_human" placeholder="Enter above number"/>
<input type="hidden" name="hidden" value="<?=$generatednumber;?>"/>
</form>

【讨论】:

    猜你喜欢
    • 2014-05-10
    • 1970-01-01
    • 2016-04-13
    • 2015-05-28
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多