1

Is this captcha type botsafe for a PHP form?

<?php 
session_start(); 
$text = rand(10000,99999); 
$_SESSION["vercode"] = $text; 
$height = 25; 
$width = 53; 

$image_p = imagecreate($width, $height); 
$black = imagecolorallocate($image_p, 0, 0, 0); 
$white = imagecolorallocate($image_p, 255, 255, 255); 
$font_size = 50; 

imagestring($image_p, $font_size, 5, 5, $text, $white); 
imagejpeg($image_p, null, 80); 
?>

and then I let it run through an IF statement that is connected to a form this way.

$verify = $_POST['verification'];
if ($verify === $_SESSION['vercode'])
4

3 回答 3

1

很难说它是机器人安全的。您正在创建一个简单的字符串并将其显示在图片中。

这意味着如果“黑客”将使用 OCR 机制,他们可以轻松读取图像中的文本。因此,OCR 应该无法读取文本本身(例如,可以通过在文本中添加模糊、扭曲或线条来解决)

我认为您应该查看诸如 re-captcha 之类的流行库以及它们在此处提供的信息:http ://www.google.com/recaptcha/learnmore

于 2013-06-17T09:01:34.087 回答
1

这是 PHP 表单的验证码类型 botsafe 吗?

绝对不。您的代码创建了一个具有黑色背景和白色文本的图像,全部采用相同的字体和样式。没有什么可以让机器人难以阅读文本。

为了使其防机器人,您需要扭曲文本并最好改变颜色。如果您添加一些背景噪音以防止机器人轻松确定字符,它也会有所帮助。您可以使用已经解决所有这些问题的reCaptcha之类的东西,而不是自己编写代码的麻烦。

您的图像示例:

在此处输入图像描述

于 2013-06-17T09:01:44.083 回答
1

几乎所有定制的 CAPTCHA 都可以安全地抵御机器人,仅仅是因为没有机器人制造商会花时间破解它。因此,如果您有一些简单的站点,那么使用这样的东西会很安全。

如果您计划制作插件或在网站上使用它,机器人制造商解决验证码会有利可图,那么它就不安全了。因为文本很容易转换为实际代码。

但是话又说回来,如果你自己为一个简单的网站做一些东西,你可以更有创意,做一些用户甚至不知道的东西,因此不会被它惹恼。

也许在表单中创建一个文本字段,然后将其放置在视口之外。没有用户会填写此字段,但处理表单的机器人会填写。因此,您可以简单地在服务器端检查该字段是否有值。如果是这样,它是一个机器人。

另外,如果您自己制作东西。不要给它一个易于理解的名称,例如“CAPTCHA”,而是使用可能是实际字段的名称。然后也不会有任何自动尝试绕过它。

于 2013-06-17T09:02:59.710 回答