非安全环境下的两种web安全验证实例

2013-02-05 14:03
第一种:浏览器端与WEB服务器
1,使用浏览器登录时,服务器给出20位随机验证字符串,并保存在session中。
2,浏览器端使用js首先将用户输入的密码生成hash值,如40位SHA1,然后加上服务器给出的20位随机字符串,再次混合hash,然后将登录名与混合hash值两项提交至WEB服务器验证。
3,服务器首先赋值session中保存的随机字符串,并销毁session,然后跟据用户名调取数据库中的密码,以“2”相同的方式得到混合hash值后进行对比。
4,服务器端验证成功后在session中保存用户user-agent及ip,进行匹对。
实例:/admin/

第二种:服务器与服务器
1,两台服务器上设置相同的安全加密字符串。
2,使用时间为随机令牌,将加密字符串与时间混合hash,然后进行验证,时间令牌需考虑到不同服务器间的时间误差,一般情况正负30秒就够用了。

以下是基于PHP脚本的正负30秒加密验证函数。
//发送令牌
function Token($Tokenword){
$s = gmdate("s",time());
$t = gmdate("YmdHi",time()+8*3600);
if($s < "30") {
$t = $t."00";
}elseif($s >= "30"){
$t = $t."30";
}
$Token = SHA1($Tokenword.$t);
return $Token;
}

//验证令牌
function AuthToken($Token,$Tokenword){
$s = gmdate("s",time());
$t = gmdate("YmdHi",time()+8*3600);
if($s < "30") {
$t1 = ($t-1)."30";
$t2 = $t."00";
} elseif ($s >= "30"){
$t1 = $t."00";
$t2 = $t."30";
}
$t1hash = SHA1($Tokenword.$t1);
$t2hash = SHA1($Tokenword.$t2);
if($Token != $t1hash and $Token != $t2hash){
return false;
} else {
return true;
}
}
实例:不便放出。

结:在China,不管是否经过国际出口,任何信息都会保留下来,内与外的区分在于是否被主动探测,以上两种验证方式好处在于中间人能得到数据,但是基本无效。


最后更新:2013-02-06 08:39

0 条回复

说两句