首页 php教程 php手册 php5 的 session 详解之三:SESSION 安全

php5 的 session 详解之三:SESSION 安全

Jun 06, 2016 pm 07:47 PM
php5 session 安全 详解

会话模块不能保证存放在会话中的信息只能被创建该会话的用户看到。根据其存放的数据,还需要采取更多措施来主动保护会话的完整性。 评估会话中携带的数据并实施附加保护措施通常要付出代价,降低用户的方便程度。例如,如果要保护用户免于受简单的社交策略侵害(

       会话模块不能保证存放在会话中的信息只能被创建该会话的用户看到。根据其存放的数据,还需要采取更多措施来主动保护会话的完整性。

       评估会话中携带的数据并实施附加保护措施通常要付出代价,降低用户的方便程度。例如,如果要保护用户免于受简单的社交策略侵害(注:指在 URL 中显示的会话 ID 会被别人在电脑屏幕上看到,或被别的网站通过 HTTP Referer得到等),则应该启用 session.use_only_cookies。此情形下,客户端必须无条件启用 cookie,否则会话就不工作。有几种途径会将现有的会话 ID 泄露给第三方。泄露出的会话 ID 使第三方能够访问所有与指定 ID 相关联的资源。

       第一,URL 携带会话 ID。如果连接到外部站点,包含有会话 ID 的 URL 可能会被存在外部站点的 Referer 日志中。

       第二,较主动的攻击者可能会侦听网段的数据包。如果未加密,会话ID会以明文方式在网络中流过。对此的解决方式是在服务器上实施SSL并强制用户使用。默认情况下,所有与特定会话相关的数据都被存储在由INI选项session.save_path 指定的目录下的一个文件中。对每个会话会建立一个文件(不论是否有数据与该会话相关)。这是由于每打开一个会话即建立一个文件,不论是否有数据写入到该文件中。注意由于和文件系统协同工作的限制,此行为有个副作用,有可能造成用户定制的会话处理器(例如用数据库)丢失了未存储数据的会话。上面介绍的函数下文将会用到,但还有一些有关 session 的函数也介绍一下:

session_encode

函数功能:sesssion 信息编码

函数原型:string session_encode(void);

返回值:字符串

功能说明:返回的字符串中包含全局变量中各变量的名称与值,形式如:a|s:12:"it is a test\";c|s:4:"lala"; a 是变量名 s:12 代表变量 a 的值"it is a test 的长度是 12 变量间用分号”;”分隔。

session_decode

函数功能:sesssion 信息解码

函数原型:boolean session_decode (string data)

返回值:布尔值

功能说明:这个函数可将 session 信息解码,成功则返回逻辑值 true

      Php5 不再使用 session_id,而是把它变成一个常量 SID,并保存在 cookie 中。如果客户端禁用了cookie,php 会自动通过 url 自动传动传递 SID,其条件是设置php.ini中的 session.use_trans_sid = 1。此时即使客户端即使禁用了 cookie也没关系了。

strip_tags() 来输出 SID 以避免 XSS 相关的攻击。

Session 跨页传递问题:

session 跨页传递需要考虑三种情况:

1客户端禁用了 cookie。
2浏览器出现问题,暂时无法存取 cookie
3 php.ini 中 的 session.use_trans_sid = 0 或者编译时没有打开--enable-trans-sid选项
       为什么会这样呢?下面解释一下原因:
       Session 文件分为两部分:session 变量保存在服务器端(默认以文件方式存储session);而 session id 则以 cookie 形式保存在客户端。(注意:session 默认是基于 cookie 的)。当用户的浏览器向服务器提出请求时,同时发送包含session id的cookie(默认情况下)。服务器根据客户端提供的 session id 来得到用户的文件,即保存在服务器端的 session 变量值。事实上,session id 可以使用客户端的Cookie 或者 Http1.1 协议的 Query_String(就是访问的 URL 的“?”后面的部分)来传送给服务器,然后服务器读取 Session 的目录......。也就是说,session id是取得存储在服务上的 session 变量的身份证。当代码session_start();运行的时候,就在服务器上产生了一个 session 文件,随之也产生了与之唯一对应的一个 session id,定义 session 变量以一定形式存储在刚才产生的 session 文件中。通过 session id,可以取出定义的变量。跨页后,为了使用 session,你必须又执行 session_start();将又会产生一个 session 文件,与之对应产生相应的session id( 注 : 又 会 产 生 是 有 条 件 的 , 如 果 用 户 没 有 禁 止 Cookie 的话,session id 是可以隐藏的传过去的,也就是说不会产生新的 session id,但如果禁止了 Cookie 的话,就需要手动传递 session id 来解决此问题了,见例 2)),用这个session id 是取不出前面提到的第一个session文件中的变量的,因为这个session id 不是打开它的“钥匙”。如果在 session_start();之前加代码session_id($session id);将不产生新的 session 文件,直接读取与这个 id 对应的 session 文件。PHP中的session在默认情况下是使用客户端的 Cookie 来保存 session id的,所以当客户端的 cookie 出现问题的时候就会影响 session 了。必须注意的是:

       session不一定必须依赖cookie,这也是session相比 cookie 的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把 session id 附着在 URL 中,这样再通过 session id 就能跨页使用 session 变量了。但这种附着也是有一定条件的,

其一:“php.ini 中的 session.use_trans_sid = 1 或者编译时打开打开了--enable-trans-sid 选项”;

其二:运行 PHP 的服务器必须是 unix/linux系统,windows 不具备此项功能。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Windows 11安全中心关闭方法详解 Windows 11安全中心关闭方法详解 Mar 27, 2024 pm 03:27 PM

在Windows11操作系统中,安全中心是一个重要的功能,它帮助用户监控系统安全状态、防御恶意软件和保护个人隐私。然而,有时候用户可能需要临时关闭安全中心,例如在安装某些软件或进行系统调优时。本文将详细介绍Windows11安全中心的关闭方法,帮助您正确和安全地操作系统。1.如何关闭Windows11安全中心在Windows11中,关闭安全中心并不

Windows安全中心实时保护关闭方法详解 Windows安全中心实时保护关闭方法详解 Mar 27, 2024 pm 02:30 PM

Windows操作系统作为全球用户数量最庞大的操作系统之一,一直以来备受用户青睐。然而,在使用Windows系统时,用户们可能会遇到诸多安全隐患,如病毒攻击、恶意软件等威胁。为了强化系统安全,Windows系统内置了许多安全保护机制,其中之一便是Windows安全中心的实时保护功能。今天,我们将会详细介绍Windows安全中心实时保护的关闭方法。首先,让我们

AI 的新世界挑战:安全和隐私怎么了? AI 的新世界挑战:安全和隐私怎么了? Mar 31, 2024 pm 06:46 PM

生成性AI的快速发展在隐私和安全方面带来了前所未有的挑战,引发了对监管干预的紧迫呼吁。上周,我有机会在华盛顿特区与一些国会议员及其工作人员讨论AI与安全相关的影响。今天的生成性AI让我想起80年代末的互联网,基础研究、潜在潜力和学术用途,但它还没有为公众做好准备。这一次,不受约束的供应商野心,受到小联盟风险资本的推动和Twitter回声室的激励,正在快速推进AI的“美丽新世界”。“公共”基础模型存在缺陷,不适用于消费者和商业用途;隐私抽象,即使存在,也像筛子一样泄漏;安全结构非常重要,因为攻击面

java框架安全架构设计应如何与业务需求相平衡? java框架安全架构设计应如何与业务需求相平衡? Jun 04, 2024 pm 02:53 PM

通过平衡安全需求和业务需求,Java框架设计可实现安全:识别关键业务需求,优先考虑相关安全要求。制定弹性安全策略,分层应对威胁,定期调整。考虑架构灵活性,支持业务演变,抽象安全功能。优先考虑效率和可用性,优化安全措施,提高可见性。

如何实施 PHP 安全最佳实践 如何实施 PHP 安全最佳实践 May 05, 2024 am 10:51 AM

如何实施PHP安全最佳实践PHP是最受欢迎的后端Web编程语言之一,用于创建动态和交互式网站。然而,PHP代码可能容易受到各种安全漏洞的攻击。实施安全最佳实践对于保护您的Web应用程序免受这些威胁至关重要。输入验证输入验证是验证用户输入并防止恶意输入(如SQL注入)的关键第一步。PHP提供了多种输入验证函数,例如filter_var()和preg_match()。示例:$username=filter_var($_POST['username'],FILTER_SANIT

Struts 2框架的安全配置和加固 Struts 2框架的安全配置和加固 May 31, 2024 pm 10:53 PM

为保护Struts2应用程序,可以使用以下安全配置:禁用未使用的功能启用内容类型检查验证输入启用安全令牌防止CSRF攻击使用RBAC限制基于角色的访问

使用C++实现机器学习算法:安全性考虑和最佳实践 使用C++实现机器学习算法:安全性考虑和最佳实践 Jun 01, 2024 am 09:26 AM

在使用C++实现机器学习算法时,安全考虑至关重要,包括数据隐私、模型篡改和输入验证。最佳实践包括采用安全库、最小化权限、使用沙盒和持续监控。实战案例中展示了使用Botan库对CNN模型进行加密和解密,以确保安全训练和预测。

SHIB币放在哪个钱包更安全?(新手必看) SHIB币放在哪个钱包更安全?(新手必看) Jun 05, 2024 pm 01:30 PM

SHIB币对于投资者来说已经不陌生了,它是狗狗币同类型概念代币,随着市场的发展,目前SHIB的市值已经排名12了,可以看出SHIB市场的火爆,吸引力无数投资者参与投资。而此前市场的交易、钱包安全事件频出,很多投资者对于SHIB的存放问题一直感到担忧,不知道当下SHIB币放在哪个钱包更安全?根据市场数据分析来看,相对安全的钱包主要就是OKXWeb3Wallet、imToken、MetaMask钱包会比较安全,接下来小编为大家详细说说。SHIB币放在哪个钱包更安全?目前来看,SHIB币放在OKXWe

See all articles