Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91262
  • 博文数量: 49
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 450
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-28 15:27
文章分类

全部博文(49)

分类: PHP

2016-12-26 11:09:16

本文介绍下,用php实现的用于检测密码强度的一段代码,有需要的朋友参考下。

    php编程中,尤其是用户注册这样的模块时,对用户密码强度的要求,再多也不过。

现在很多网站,都会对密码强度进行检测,以获取符合安全要求的用户密码。
不过,有些对密码强度检测的功能,是建立在js或其它脚本上的,这可能会被恶意破坏者越过密码检测,而进行破坏。

   本文介绍的这段代码,基于对长度、特殊字符、数字、字母等进行检测,另外,还可以自己添加一些额外的字符,以加强密码的安全性。

看代码吧,如下:

/**

 *

 *

 * @检测密码强度

 * @param string $password

 * @return int

 * @edit

 */

function testPassword($password)

{

    if ( strlen( $password ) == 0 )

    {

        return 1;

    }

    $strength = 0;

    /*** get the length of the password ***/

    $length = strlen($password);

    /*** check if password is not all lower case ***/

    if(strtolower($password) != $password)

    {

        $strength += 1;

    }

    

    /*** check if password is not all upper case ***/

    if(strtoupper($password) == $password)

    {

        $strength += 1;

    }

    /*** check string length is 8 -15 chars ***/

    if($length >= 8 && $length <= 15)

    {

        $strength += 1;

    }

    /*** check if lenth is 16 - 35 chars ***/

    if($length >= 16 && $length <=35)

    {

        $strength += 2;

    }

    /*** check if length greater than 35 chars ***/

    if($length > 35)

    {

        $strength += 3;

    }

    

    /*** get the numbers in the password ***/

    preg_match_all('/[0-9]/', $password, $numbers);

    $strength += count($numbers[0]);

    /*** check for special chars ***/

    preg_match_all('/[|!@#$%&*\/=?,;.:\-_+~^\\\]/', $password, $specialchars);

    $strength += sizeof($specialchars[0]);

    /*** get the number of unique chars ***/

    $chars = str_split($password);

    $num_unique_chars = sizeof( array_unique($chars) );

    $strength += $num_unique_chars * 2;

    /*** strength is a number 1-10; ***/

    $strength = $strength > 99 ? 99 : $strength;

    $strength = floor($strength / 10 + 1);

    return $strength;

}

/*** 调用示例 ***/

$password = 'php_tutorials_and_examples!123';

echo testPassword($password);

?>

阅读(849) | 评论(0) | 转发(0) |
0

上一篇:linux 下安装redis

下一篇:PHP万能密码

给主人留下些什么吧!~~