【问题标题】:Botsafe Captcha for PHP form verification用于 PHP 表单验证的 Botsafe Captcha
【发布时间】:2013-06-17 17:02:59
【问题描述】:

这种验证码类型是否适用于 PHP 表单?

<?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'])

【问题讨论】:

  • 不,不是。事实上,我曾经在CTF 比赛中使用Tesseract OCR 绕过某个验证码验证,这比这次更难:-)

标签: php security captcha


【解决方案1】:

这种验证码类型是否适用于 PHP 表单?

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

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

图片示例:

【讨论】:

  • 有代码可以帮我打乱文字吗?还是可以逆转?
  • 没有简单的代码可以提供给你。你需要想出一种加扰它的方法。例如,将每个字符换成不同的颜色,并改变角度、位置和颜色。再加上一些背景噪音。
【解决方案2】:

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

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

我认为你应该看看像 re-captcha 这样的流行库以及它们在此处提供的信息:http://www.google.com/recaptcha/learnmore

【讨论】:

    【解决方案3】:

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

    如果您打算制作插件或在网站上使用它,机器人制造商可以通过解决验证码来获利,那么这将是不安全的。因为文本很容易还原为实际代码。

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

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

    如果你自己做点什么。不要给它一个易于理解的名称,例如“CAPTCHA”,而是使用可能是实际字段的名称。那么也不会有任何自动尝试绕过它。

    【讨论】:

    • 这是个好主意,但是,它是用于注册表单的,所以我希望避免因此而不得不删除帐户。会制作自定义图片并上传,然后将 IF 语句设置为 === “自定义图片显示的任何数字”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多