栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PHP会话劫持

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP会话劫持

术语“会话”被重载以表示服务器上和浏览器中的不同内容。浏览器会话最多只能与服务器会话紧密连接。“会话劫持”是指服务器会话。

在服务器端,会话具有ID(在客户端和服务器之间传递),内容(存储在服务器上)和可能的其他属性(例如上次访问时间)。会话ID通常以cookie的形式传递。在PHP中,cookie的默认名称是“PHPSESSID”。如果没有cookie,PHP将(可选)使用同名的查询字符串参数(“PHPSESSID”)。此cookie(或查询参数)可以轻松更改,因此会话标识符也可以更改。

会话的 内容
(即包含用户的登录状态)不能由客户端更改,数据存储在服务器上,只能由该服务器上的PHP脚本更改。请注意,在共享主机环境(由其他服务或用户共享)中,如果使用默认会话存储目录(

/tmp
),则可以覆盖会话。为了防止这种情况,要么使用数据库,要么使用具有适当目录权限
session_set_save_handler()
集的自定义会话目录
session.save_path
(最好设置为700,这意味着只有所有者(PHP用户)才能对其进行读写)。

为了防止会话劫持,您必须具有其他方法可以根据会话识别用户。这可以是用户代理,IP地址或其他cookie。前面提到的方法只是解决方法,如果涉及到会话,则最好使用HTTPS来防止会话cookie的窃取。不要忘记将

httponly
标志设置为
true
使用
session_set_cookie_params()

在客户端,“会话”再次超载并在各种上下文中使用(例如,会话管理器,当打开浏览器时会恢复打开的页面,会话cookie和

sessionStorage
。我们可以说浏览器会话由视图及其相关数据的集合组成,以尝试将这些含义组合在一起(绝不是标准的含义)。(通过“视图”,我指的是带标签的浏览器中的选项卡,而非带标签的浏览器中的窗口;
DOM
window
对象将视图公开给JS。)每个视图都有一个历史记录,一个当前页面和页面数据。会话中的视图之间共享同一域中页面的页面数据;如果两个页面位于不同的域或不同的会话中,则它们不共享数据。退出浏览器会关闭所有打开的会话,可能会保存部分会话(例如历史记录,当前页面,
sessionStorage
),以便会话管理器可以重新打开它们。会话cookie是在会话关闭时被丢弃的cookie。换句话说,会话cookie是非持久性的。尽管会话cookie可以保存会话ID,但是这两个概念是正交的(意义4;会话cookie可以保存会话ID以外的内容,并且可以将会话ID存储在持久性cookie中)。

同一集合中是否有两个不同的视图取决于浏览器。例如,一个浏览器可能认为一个会话由一个窗口中的所有选项卡组成;单独的窗口是单独的会话。IE8允许用户通过“新会话”菜单项创建新会话。否则,将在同一会话中打开新的窗口和选项卡。隐私模式还会创建新的会话。

总而言之,浏览器会话确实是由浏览器设置的,尽管它为用户提供了多种控制浏览器会话的方式:创建新会话,通过浏览,保存和还原会话来更改视图中的历史记录和当前页面。用户甚至可以通过编辑保存在磁盘上的会话来更改会话数据,尽管这不是浏览器提供的功能。这些都与会话劫持无关。服务器会话是由服务器创建和管理的,但是用户可以(尝试)通过更改其浏览器传回服务器的会话ID来切换服务器会话,这是会话劫持的基础。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号