【发布时间】: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() 函数生成的随机数不同,并且始终是错误验证。
【问题讨论】:
-
我认为这种身份验证可以轻松绕过。因为数字实际上是在上下文中给出的,并且可以被机器人读取并重新输入!我建议不要使用这种方法,因为它对以某种方式使机器人难以阅读的数字没有太大作用!