来源:自学PHP网 时间:2015-04-17 12:00 作者: 阅读:次
[导读] 暴力攻击是一种不使用任何特殊手段而去穷尽各种可能性的攻击方式。它的更正式的叫法是穷举攻击穷举各种可能性的攻击。对于访问控制,典型的暴力攻击表现为攻击者通过大量的尝...
暴力攻击是一种不使用任何特殊手段而去穷尽各种可能性的攻击方式。它的更正式的叫法是穷举攻击——穷举各种可能性的攻击。 对于访问控制,典型的暴力攻击表现为攻击者通过大量的尝试去试图登录系统。在多数情况下,用户名是已知的,而只需要猜测密码。 尽管暴力攻击没有技巧性可言,但词典攻击似乎有一定的技巧性。最大的区别是在进行猜测时的智能化。词典攻击只会最可能的情况列表中进行穷举,而不像暴力攻击一样去穷举所有的可能情况。 防止进行验证尝试或限制允许错误的次数还算是一个比较有效的安全手段,但是这样做的两难之处在于如何在不影响合法用户使用的情况下识别与阻止攻击者。 在这种情况下,对一致性的判定可以帮助你区分二者。这个方法与前面所述的防止会话劫持的做法很相似,但区别是你要确定的是一个攻击者而不是一个合法用户。 考虑下面的HTML表单: <form action="http:// www.2cto.com /login.php" method="POST"> <?php $username = 'victim'; $content = "username=$username&password=$password"; $http_request = ''; $http_request .= "POST /login.php HTTP/1.1\r\n"; if ($handle = fsockopen('example.org', 80)) while (!feof($handle)) fclose($handle); /* Check Response */ 你可以通过很多安全措施去防止此类攻击。我们注意到,在暴力攻击中每次的HTTP请求除了密码是不同的,其他部分完全相同,这一点是很有价值的。 尽管在超过一定数量的失败尝试后临时冻结帐号是一种有效的防范手段,但你可能会去考虑采用更确定的方式去冻结帐号,以使攻击者更少地影响合法用户对你的应用的正常使用。 还有一些流程也可以增大暴力攻击的难度,使它不太可能成功。一个简单的遏制机制就能有效地做到这一点: <?php /* mysql_connect() */ $clean = array(); $now = time(); $salt = 'SHIFLETT'; if (ctype_alnum($_POST['username'])) $sql = "SELECT last_failure, password if ($result = mysql_query($sql)) if ($record['last_failure']> $max) $sql = "UPDATE users mysql_query($sql); ?> |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com