这是PHP表单的captcha类型botsafe吗?
<?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);
?>然后,我让它通过一个IF语句运行,该语句以这种方式连接到一个表单。
$verify = $_POST['verification'];
if ($verify === $_SESSION['vercode'])发布于 2013-06-17 17:01:44
这是
表单的验证码类型吗?
绝对不是。您的代码创建了一个具有黑色背景和白色文本的图像,所有图像的字体和样式都相同。没有任何东西会让机器人难以阅读文本。
要使它防僵尸,你需要扭曲文本,最好是改变颜色。此外,如果您添加一些背景噪声,以防止机器人轻松确定字符,这也会有所帮助。您可以使用像reCaptcha这样已经解决了所有这些问题的东西,而不是麻烦地编写自己的代码。
您的图像示例:

发布于 2013-06-17 17:01:34
很难说它会是机器人安全的。您正在创建一个简单的字符串并将其显示在图片中。
这意味着如果“黑客”使用OCR机制,他们可以很容易地读取图像中的文本。因此,文本本身应该是OCR无法读取的(例如,可以通过在文本中添加模糊、失真或线条来解决)
我认为您应该看看像re-captcha这样的流行的库,以及它们在这里提供的信息:http://www.google.com/recaptcha/learnmore
发布于 2013-06-17 17:03:00
几乎任何定制的验证码都是安全的,因为没有一个机器人制造商花时间来破解它。所以,如果你有几个简单的网站,你用这样的东西是安全的。
如果你计划制作一个插件,或者在一个网站上使用它,在这个网站上,机器人制造商解决验证码问题是有利可图的,那么它就不安全了。因为文本很容易被还原成实际的代码。
但话又说回来,如果你自己为一个简单的网站做了一些东西,你可以更有创造力,做一些用户甚至不知道那里有的东西,因此不会被它惹恼。
可能是在窗体中创建一个文本字段,然后将其放置在视口之外。用户不会填写此字段,但处理表单的机器人将填写此字段。因此,您可以简单地在服务器端检查该字段是否有值。如果有,那它就是一个机器人。
如果你自己做了一些东西的话。不要给它一个像'CAPTCHA‘这样容易理解的名称,而是使用一个可以是实际字段的名称。那么也不会有任何自动尝试绕过它。
https://stackoverflow.com/questions/17143759
复制相似问题