Impossible防御
<?php $html = ""; if ($_SERVER['REQUEST_METHOD'] == "POST") { $cookie_value = sha1(mt_rand() . time() . "Impossible"); setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true); } ?>使用随机数+时间戳+常量字符串+sha1加密。好吧,确实很难猜出来了,是不是impossible呢?唔。。。
4. 会话劫持的测试事实上到此为止我们还不能全面讨论会话劫持的测试,因为还有很多种劫持的方法我们没有去了解。
不过呢,我们可以借这个机会来解释一下安全测试的大方向。
路是一步步走出来的,同样的道理,对于一个产品的防御机制则是一种典型的1+1>2的概念。
我在项目中间经常看到这种现象:由于现在的前端技术也比较成熟了,很多后端工程师就依赖于前端去完成数据校验工作,后端校验就省去了。
但是实际上任何产品的安全机制都应该是层层叠加的体系,任何单层的防御都不能确保产品的绝对安全。
上面提到的前后端校验就是很好的例子:前端校验实在太容易绕过了,后端必须要做好二重校验,这就是个双保险的概念。
回到用户劫持攻击的测试,session标识颁发规则就是产品层叠防御机制中的其中一层。
测试人员可以通过解读这一规则来判断他的合理性。简单来说,如果你们的session标识规则,你能够想办法破解掉,不用想了报bug吧。