免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3118 | 回复: 16
打印 上一主题 下一主题

[会话] COOKIE用户验证的构思可行性,请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-28 10:14 |只看该作者 |倒序浏览
最近做一 用户管理系统(通行证系统)

系统涉及大流量在线访问、跨域(服),以及安全方面的问题

目前按这样的思路进行站点 通行证 的设计:

管理系统 要有一个密钥(或者一组密钥)
如:
$key=md5('8234jfds');

登录成功后部分只要设置这样:

  1. $pass_id=md5($pass.$key);//加密密码
  2. $chk_id=md5($uname.$pass_id.$key);//加密验证串

  3. setcookie('name',$uname);//用户名
  4. setcookie('pass',$pass_id);
  5. setcookie('chk_id',$chk_id);
复制代码



验证的时候如下对比,即可认为是否合法登录:

  1. if(md5($_COOKIE['name'].$_COOKIE['pass'].$key)===$_COOKIE['chk_id'])
  2. {
  3. return true;
  4. }
  5. else
  6. {
  7. return false;
  8. }
复制代码




想完全代替SESSION不知可行否,是否存在漏洞?

[ 本帖最后由 hitty 于 2005-12-28 10:45 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-12-28 10:24 |只看该作者
cookie一般不能跨域名

而cookie这种不保存明文的做法是基本的,以前是从这种方式转到使用session的

漏洞谈不上,安全性差点

论坛徽章:
0
3 [报告]
发表于 2005-12-28 10:42 |只看该作者
原帖由 wobushiwo 于 2005-12-28 10:24 发表
cookie一般不能跨域名

而cookie这种不保存明文的做法是基本的,以前是从这种方式转到使用session的

漏洞谈不上,安全性差点



安全性方面是否指的是 $key 容易被破解?

是否可以采用不同的一组$key来增加安全性
$key[1],$key[2],$key[3]...

还有一个郁闷的地方就是 COOKIE
被盗时可能会导致 用户身份被冒用

论坛徽章:
0
4 [报告]
发表于 2005-12-28 11:58 |只看该作者
不是指破解,是拿到那串MD5后,以后我直接使用那一串验证了,不用知道你原来是什么啊

论坛徽章:
0
5 [报告]
发表于 2005-12-28 13:31 |只看该作者
强烈建议在计算摘要或加密原始字符串中加入IP地址信息, 可以是字符型也可以用整型(ip2long)来表示.

cookie 总是有可能泄漏或被拦截盗取. 它根本不必解密(这里的md5没什么用), 而是把原始的字符串作为自己的 cookie value 发送即可.  (特别是你的网页有可能被加载js代码的, 这个东西防不胜防... :p)

简单举个例子, [IMG] 标签大家很熟, 但过滤不仔细的话会被利用把cookie发送出去 (<JS>:document.cookie)

验证信息的时候加上IP验证, 这样被攻击的可能性减到最小.

论坛徽章:
0
6 [报告]
发表于 2005-12-28 13:33 |只看该作者
加个时间限制


  1. if(($_COOKIE['c_time']-time())>=(60*30))
  2. {
  3. .......//超时处理
  4. }
  5. else
  6. {
  7. #每访问一次更新一次时效
  8. $c_time=time();
  9. setcookie('c_time',$c_time);
  10. $chk_id=md5($uname.$pass_id.$c_time.$key);//此时验证串将发生未知性改变
  11. .......

  12. }
复制代码

[ 本帖最后由 hitty 于 2005-12-28 13:40 编辑 ]

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2005-12-28 13:36 |只看该作者
如果是你自己应用,你可以自己添加一个加密解密的的对对函数啊。


最简单的判别例如加入时间的校验。

论坛徽章:
0
8 [报告]
发表于 2005-12-28 14:29 |只看该作者
原帖由 hightman 于 2005-12-28 13:31 发表
强烈建议在计算摘要或加密原始字符串中加入IP地址信息, 可以是字符型也可以用整型(ip2long)来表示.

cookie 总是有可能泄漏或被拦截盗取. 它根本不必解密(这里的md5没什么用), 而是把原始的字符串作为自己的 co ...


我对你说的用img标签能发送cookie很感兴趣,请给一个完整例子.

另外,楼主的cookie加不加时间问题不大,
你直接加入这两个参数就行了.
ip,port


但是楼主,这都不是关键,关键在于,cookie不能跨域,你的心血似乎已经白费.
另外,在服务器端你还要请求验证服务器吧,把你的请求验证服务器的代码发来看看

论坛徽章:
0
9 [报告]
发表于 2005-12-28 14:34 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2005-12-28 14:58 |只看该作者
原帖由 litie123 于 2005-12-28 14:34 发表
如果你想跨域实现用户验证,建议你在生成一个session_id以后在每一个超链接后面加上参数:
如  abc.com/aontent.php?action=view&article_id=1234&sid=jfidoa7u83952kjlafhkjdlsa
取得sid值以后从数据 ...



那就是不用cookie,而是有get传递,这样访问的每个页面都有一长串参数.yahoo就是这么作的.不知其他大站是不是也这样.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP