我一直在收集有关如何防止日志页面上的暴力攻击或多个帐户创建的破坏的信息.
我得出结论(感谢*的人),最好的方法是使用验证码.
但是不方便阅读验证码或重音字符可能会阻止用户使用网站.
所以,我发现了一个易于使用的小脚本,我适应了我的网站.这是一个简单的数学验证码,建议总结从0到10的2个数字.它显示的单词“一”,“两个”,“三个”……而不是数字.
我的问题是:
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'>";
页数:
> form.php:
所有’创建帐户’输入字段验证码
=>测试
> test.php:
if($_ POST [‘captcha’]!= $_SESSION [‘captcha’]){
$_SESSION [‘captcha_control’] =“false”;
}
然后所有’创建帐户’$_POSTS都经过注射测试
如果它们中的任何一个或验证码返回“false”,则脚本偏转到=> problem.php
> problem.php:
回显初始形式,突出显示所有“错误字段”
并显示一个新的验证码,是对还是错了.
validation =>回到test.php
非常感谢.
解决方法:
像大多数简单的CAPTCHA一样,它会运行得相当好,直到你的网站足够重要,垃圾邮件发送者花几分钟来弄清楚如何打破它.此时,您将被垃圾邮件淹没.
如果你打算使用自己的CAPTCHA,那就太过分了 – 它甚至不需要是随机的.简单地要求用户输入一个恒定的单词(例如,“在这个框中输入’橙色’)将停止绝大多数简单的spambots.