phpwind的密码及cookie加密方式

phpwind的数据表中,密码采用单纯一次md5加密的方式。所有的密码经过一次md5之后存入数据库。这在当今来说,并不是什么安全的方式。因为假设,你的数据库被人盗取,那么用户的密码也几乎被人盗取。因为现在甚至有在线破解md5值的网站,已经积累了大量的数据,简单的位数短的密码可以直接还原。让你的隐私无处循形。

而在本博中,我曾提到过一次discuz的加密方式,http://www.akii.org/discuz_md5_salt/,其采用salt方式,将一个随机字串的md5值与密码的md5方式再次md5之后存入数据库。当然同时也要存储这个随机字串。假设用户数据库被人盗取后,也无法通过被md5的值来获取用户密码。这在很大程度上保证了用户的隐私安全。

phpwind的cookie加密方式,采用用户浏览器信息加用户的md5后的密码再加论坛的一个cookie加密字串(安全时随机生成,可更改)来形成一个字串,再能冠军base_64方式来加密后存入cookie。这种加密方式还是比较可取的。因为用户的浏览器信息是不能完全摸拟的。而且phpwind提供了一项设置,即如果用在企业网络中,可能就是一个大型的局域网,可以针对网域本身进行检查。以实现不能网段间的正常浏览。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//cookie加密,采用用户信息和加密字串加密码的md5值
function PwdCode( $pwd ){
     return md5( $GLOBALS [ 'pwServer' ][ 'HTTP_USER_AGENT' ]. $pwd . $GLOBALS [ 'db_hash' ]);
}
 
//base_64加解密码,用以存入和读取cookie中的加密字符串
function StrCode( $string , $action = 'ENCODE' ){
     $action != 'ENCODE' && $string = base64_decode ( $string );
     $code = '' ;
     $key  = substr (md5( $GLOBALS [ 'pwServer' ][ 'HTTP_USER_AGENT' ]. $GLOBALS [ 'db_hash' ]),8,18);
     $keylen = strlen ( $key ); $strlen = strlen ( $string );
     for ( $i =0; $i < $strlen ; $i ++) {
         $k      = $i % $keylen ;
         $code  .= $string [ $i ] ^ $key [ $k ];
     }
     return ( $action != 'DECODE' ? base64_encode ( $code ) : $code );
}

而phpwind后台,因为要加入时间,默认为1800秒,所以把时间变量也加入了cookie

1
2
$CK = array ( $timestamp , $_POST [ 'admin_name' ],md5(PwdCode(md5( $_POST [ 'admin_pwd' ])). $timestamp ), $safecv );
     Cookie( 'AdminUser' ,StrCode(implode( "\t" , $CK )));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值