cookie如何验证登录?有何问题? cookie验证登录肯定存在安全问题.通常都是把用户ID加密,并保存到cookie,服务器提取的时候,好知道是谁来了,并设定一个coolie的有效期。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 cookie常用来保存在客户端的信息,如用户名和登陆时间等,如果要做验证的话,安全肯定存在问题(根据用户信息有没有价值而定)当然加密是个不错的做法,md5()函数就可以搞定 老兄:那cookie要保存哪些值呢?用户id(或用户名)肯定要保存的,还保存什么呢?哪些要加密,用什么加密机制相对安全呢? 普通的用户认证,基本上用户名就可以,关键是要知道是谁来了。可以用Blowfish加密,在服务器再把加密后的字串可以复原,你也可以在加密之前,自行对字串做一个简单的扰乱(只要自己能恢复就可以)。密码之类的最好不要保存,存得太多没用,而且无形当中增加了漏洞。 function questcode($question,$customquest,$answer){ $question = $question=='-1' ? $customquest : $question; return $question ? substr(md5(md5($question).md5($answer)),8,10) : '';}function PwdCode($pwd){ global $db_hash; return md5($_SERVER["HTTP_USER_AGENT"].$pwd.$db_hash);}function StrCode($string,$action='ENCODE'){ global $db_hash; $action != 'ENCODE' && $string = base64_decode($string); $code = ''; $key = substr(md5($_SERVER['HTTP_USER_AGENT'].$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);}function getckie($Var){ if(!isset($_COOKIE[CookiePre()."_$Var"])) { return ''; } else { return $_COOKIE[CookiePre()."_$Var"]; }}function CookiePre(){ global $db_sitehash; static $pre = null; !isset($pre) && $pre = substr(md5($db_sitehash),0,5); return $pre;}$password = pwdCode(md5($passowrd));$safecv=questcode($question,$customquest,$answer);$token = StrCode($id."\t".$password."\t".$safecv);setckie("winduser", $token); setckie('user_id', $id);验证时候取出id查找数据库所对应的token与取出的token做比较 谢谢楼上老兄了!和disuz的有点像,先研究一下了,有问题再请教! 多谢五楼老兄了,就用您这个了!另请教一下, global $db_hash; global $db_sitehash; //分别在实际应用中代表什么? global $db_hash; global $db_sitehash;是安全验证码这些其实phpwind的源码好像是没次下载的安全验证码都不同具体应用没怎么研究过 求助:如何实现Cpanel面板中添加子域名的功能 最土团购网的邮件订阅为什么每次发了几十封就停住呢? 一个奇怪的问题??????????? 用phpmyadmin如何查看mysql的存储过程store procedus 怎么把上传的图片直接输出了 面试了好几家,还要等消息,有招php/linux的吗? php如何取得指定数据库的所有表名? 请问怎样实现打开选择文件夹的对话框呀,使用object吗? php做下载问题。 php执行sql返回值问题 请问这个写法是怎么理解,新手 求C、C++ 或PHP方面程序员机会
如果要做验证的话,安全肯定存在问题(根据用户信息有没有价值而定)
当然加密是个不错的做法,md5()函数就可以搞定
用户id(或用户名)肯定要保存的,还保存什么呢?
哪些要加密,用什么加密机制相对安全呢?
你也可以在加密之前,自行对字串做一个简单的扰乱(只要自己能恢复就可以)。密码之类的最好不要保存,存得太多没用,而且无形当中增加了漏洞。
function questcode($question,$customquest,$answer){
$question = $question=='-1' ? $customquest : $question;
return $question ? substr(md5(md5($question).md5($answer)),8,10) : '';
}
function PwdCode($pwd){
global $db_hash;
return md5($_SERVER["HTTP_USER_AGENT"].$pwd.$db_hash);
}
function StrCode($string,$action='ENCODE'){
global $db_hash;
$action != 'ENCODE' && $string = base64_decode($string);
$code = '';
$key = substr(md5($_SERVER['HTTP_USER_AGENT'].$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);
}
function getckie($Var){
if(!isset($_COOKIE[CookiePre()."_$Var"])) {
return '';
}
else {
return $_COOKIE[CookiePre()."_$Var"];
}
}
function CookiePre(){
global $db_sitehash;
static $pre = null;
!isset($pre) && $pre = substr(md5($db_sitehash),0,5);
return $pre;
}
$password = pwdCode(md5($passowrd));
$safecv=questcode($question,$customquest,$answer);
$token = StrCode($id."\t".$password."\t".$safecv);
setckie("winduser", $token);
setckie('user_id', $id);验证时候取出id查找数据库所对应的token与取出的token做比较
和disuz的有点像,先研究一下了,有问题再请教!
另请教一下, global $db_hash; global $db_sitehash; //分别在实际应用中代表什么?
这些其实phpwind的源码
好像是没次下载的安全验证码都不同
具体应用没怎么研究过