php session相关问题

shrimpma 2012-09-05 11:43:42
1.session 默认使用文件存储的,文件名称类似sess_323d97e65fd0f37ac187de61a82e521b,这个是session id ,是用户什么算法怎么生成的?

2.session 一般是和cookie配合使用的,cookie 的值为323d97e65fd0f37ac187de61a82e521b,是否可以利用这个值实现同步登录问题
...全文
214 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lala5201 2012-09-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

例如发送请求时候:
GET /translate/index.php/Index/syncLogin?sid=694bc03cb193ab4b9b9678250c07516b HTTP/1.1
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; ……
[/Quote]
有个浏览器插件可以手动修改请求头的
lala5201 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

2. 可以是可以,但是cookie是不能跨域的,所以最好是放到URL里,比如xxx.php?PHPSESSID=323d97e65fd0f37ac187de61a82e521b,而且……

比如在www.a.com 调用b.com的接口 登录后,
获得b.com的的PHPSESSIONID,

然后页面跳转到b.com/index.php?PHPSESS……
[/Quote]
你本地的cookie中的sessionid对得上b.con服务器上的sessionid就可以了
xuzuning 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
2.session 一般是和cookie配合使用的,cookie 的值为323d97e65fd0f37ac187de61a82e521b,是否可以利用这个值实现同步登录问题
[/Quote]不可以:
1、cookie 不可以跨域(虽然有技术手段让其跨域),但这就相当于公开个人隐私。是不可取的,因为 cookie 中并不只是 PHPSESSID
2、php 的 session 默认是存储于文件的,所以如果网站不在同一机器上,则 session 文件无法共享。即便是在同一机器上,也可以通过 session_save_path 设置不同的目录而使相同的 sessionid 存放在不同的地方,而不能共享
3、虽然 2 可以通过公共的数据库保存 session 来解决,但开放数据库远程访问就没有安全可言了。何况同步登录的网站也不一定都是基于 php 的,仅允许php网站同步登录的话,显然是残废的

当然你也可以回避掉以上提及的不利因素,去完成所谓的同步登录。但你也就是掉入井底了

SSO 单点登录,已是成熟的技术了,并且已有好几款实用的系统可供选用。完全没有自己另辟蹊径
shrimpma 2012-09-06
  • 打赏
  • 举报
回复
例如发送请求时候:
GET /translate/index.php/Index/syncLogin?sid=694bc03cb193ab4b9b9678250c07516b HTTP/1.1
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2)
Accept-Encoding: gzip, deflate
Host: localhost
Connection: Keep-Alive
Cookie: PHPSESSID=e7c25383f551075537376ae7b18a184c

这个Cookie的值能手动修改吗?
Meteorlet 2012-09-05
  • 打赏
  • 举报
回复
1. session id是为了不让人知道而达到安全的目的,所以,session id的生成越随机越好。它是服务器端生成的,用来识别用户的。如果别人知道了你的session id那么它也可以以你的身份登陆了。

2. 可以是可以,但是cookie是不能跨域的,所以最好是放到URL里,比如xxx.php?PHPSESSID=323d97e65fd0f37ac187de61a82e521b,而且如果是两台不同的服务器,那么session的数据也要保证是共享的。
china030630 2012-09-05
  • 打赏
  • 举报
回复
就会简单的使用session,留个记号,等待大牛出答案
tottyandbaty 2012-09-05
  • 打赏
  • 举报
回复
写入DB吧
qq120848369 2012-09-05
  • 打赏
  • 举报
回复
你还是看看Oauth2.0吧或者SSO吧.
shrimpma 2012-09-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

2. 可以是可以,但是cookie是不能跨域的,所以最好是放到URL里,比如xxx.php?PHPSESSID=323d97e65fd0f37ac187de61a82e521b,而且……
[/Quote]
比如在www.a.com 调用b.com的接口 登录后,
获得b.com的的PHPSESSIONID,

然后页面跳转到b.com/index.php?PHPSESSIONID=xxxx,
应该怎么处理 才能使用b.com上的用户处于登录状态?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧