PHP代码审核的详细介绍(5)

认证和授权
用户认证
检查代码进行用户认证的位置,是否能够绕过认证,例如:登录代码可能存在表单注入。
检查登录代码有无使用验证码等,防止暴力破解的手段
函数或文件的未认证调用

一些管理页面是禁止普通用户访问的,有时开发者会忘记对这些文件进行权限验证,导致漏洞发生
某些页面使用参数调用功能,没有经过权限验证,比如 index.php?action=upload
密码硬编码

有的程序会把数据库链接账号和密码,直接写到数据库链接函数中。
随机函数
rand() VS mt_rand()
rand()最大随机数是 32767,当使用 rand 处理 session 时,攻击者很容易破解出session,建议使用mt_rand()。
代码示例

复制代码 代码如下:


<?php
//on windows
print mt_getrandmax(); //2147483647
print getrandmax();// 32767
?>


可以看出 rand()最大的随机数是 32767,这个很容易被我们暴力破解。

复制代码 代码如下:


<?php
$a= md5(rand());
for($i=0;$i<=32767;$i++){
if(md5($i) ==$a ) {
print $i."-->ok!!<br>";exit;
}else { print $i."<br>";}
}
?>


当我们的程序使用 rand 处理 session 时,攻击者很容易暴力破解出你的 session,但是对于 mt_rand 是很难单纯的暴力的。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/541130559817fd161ddfbd236ead0d76.html