我一直在收集有关如何保护日志页面免受暴力攻击或创建多个帐户的骚扰的信息。
我得出结论(感谢 Stackoverflow 的你们),最好的方法是使用验证码。
但难以阅读的验证码或重音字符可能会阻止用户使用网站。
所以,我发现了一个易于使用的小脚本,我适应了我的网站。这是一个简单的数学验证码,建议将 2 个数字从0 到 10相加。它显示单词“一”、“二”、“三” ……而不是数字。
我的问题是:
1)这个小验证码本身是否提供足够的安全性?
2)我集成它的方式安全吗?(有什么办法绕过它?)
为了避免粘贴800行代码我做了一个总结,希望清楚。
验证码脚本:
$n1 = mt_rand(0,10);
$n2 = mt_rand(0,10);
$fig = array('zero','one','two','three','four','five','six','seven','eight','nine','ten');
$result = $n1 + $n2;
$sentence = $fig[$n1] .' plus '.$fig[$n2];
$_SESSION['captcha'] = $result;
$captcha_label = "<label for='captcha' >How much does ".$sentence."make?</label>";
echo $captcha_label."</label><input type='text' name='captcha' value=''/><br />";
echo "<input type='submit' name='create' value='create account'>";
页数:
- 表格.php:
所有“创建帐户”输入字段 + 验证码
=> 测试
测试.php:
if($_POST['captcha'] != $_SESSION['captcha']){
}
$_SESSION['captcha_control'] = "false";
然后所有'create account' $_POSTS 都经过注入测试
如果其中任何一个或验证码返回 "false" ,则脚本将转向 => question.php
- 问题.php:
与突出显示所有“错误字段”的初始表单相呼应,并显示新的验证码,是对还是错。
验证 => 回到test.php
非常感谢。