php如何实现session的管理

会话模块无法保证你存储在会话中的信息只能被创建会话的用户本人可见。 你需要采取额外的手段来保护会话中的机密信息, 至于采取何种方式来保护机密信息, 取决于你在会话中存储的数据的机密程度。

php如何实现session的管理

session_start — 启动新会话或者重用现有会话

严格会话管理 (推荐学习:PHP编程从入门到精通)

目前,默认情况下,PHP 是以自适应的方式来管理会话的, 这种方式使用起来很灵活,但是同样也带来了一定的风险。

立即学习“PHP免费学习笔记(深入)”;

从 PHP 5.5.2 开始,新增加了一个配置项: session.use_strict_mode。 当启用这个配置项,并且你所用的会话存储处理器支持的话,未经初始化的会话 ID 会被拒绝, 并为其生成一个全新的会话,这可以避免攻击者使用一个已知的会话 ID 来进行攻击。

 例如,攻击者可以通过邮件给受害者发送一个包含会话 ID 的链接: http://example.com/page.php?PHPSESSID=123456789。

如果启用了 session.use_trans_sid 配置项, 那么受害者将会使用攻击者所提供的会话 ID 开始一个新的会话。 如果启用了 session.use_strict_mode 选项,就可以降低风险。

Warning

用户自定义的会话存储器也可以通过实现会话 ID 验证来支持严格会话模式。 建议用户在实现自己的会话存储器的时候, 一定要对会话 ID 的合法性进行验证。

在浏览器一侧,可以为用来保存会话 ID 的 cookie 设置域,路径, 仅允许 HTTP 访问,必须使用 HTTPS 访问等安全属性。 如果使用的是 PHP 7.3. 版本,还可以对 cookie 设置 SameSite 属性。 攻击者可以利用浏览器的这些特性来设置永久可用的会话 ID。 

仅仅设置 session.use_only_cookies 配置项 无法解决这个问题。而 session.use_strict_mode 配置项 可以降低这种风险。设置 session.use_strict_mode=On, 来拒绝未经初始化的会话 ID。

Note: 虽然使用 session.use_strict_mode 配置项 可以降低灵活会话管理方式所带来的风险, 攻击者还是通过利用 JavaScript 注入等手段, 强制用户使用由攻击者创建的并且经过了正常的初始化的会话 ID。

 如何降低这种风向,可以参考本手册的建议部分。 如果你已经启用了 session.use_strict_mode 配置项, 同时使用基于时间戳的会话管理, 并且通过设置 session_regenerate_id() 配置项 来重新生成会话 ID, 那么,攻击者生成的会话 ID 就可以被删除掉了。

 当发生对过期会话访问的时候, 你应该保存活跃会话的所有数据, 以备后续分析使用。 然后让用户退出当前的会话,并且重新登录。 防止攻击者继续使用“偷”来的会话。

Warning

对过期会话数据的访问并不总是意味着正在遭受攻击。 不稳定的网络状况,或者不正确的会话删除行为, 都会导致合法的用户产生访问过期会话数据的情况。

相关专题推荐:php session (包含图文、视频、案例)

以上就是php如何实现session的管理的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2525402.html

(0)
上一篇 2025年3月5日 18:08:35
下一篇 2025年3月5日 18:08:42

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php如何测试自己的代码

    php如何测试自己的代码?下面给大家介绍几种方法: 暴力调试 这种方式简单粗暴,一般PHP程序员都会用,那就是浏览器调试,在编辑器内写完代码后随后打开万能的浏览器输入地址开始调试代码。 断点调试 说实在的,这种方式如果仅仅是看看输出结果,完…

    2025年3月5日
    000
  • php如何实现include_once

    include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。 include_once 可以用于在脚本执行期…

    2025年3月5日
    200
  • php如何查询redis

    redis查询数据: 查询redis中的数据需要先连接redis 1 、连接服务 [root@redis1-20 ~]# telnet 127.0.0.1 6380Trying 127.0.0.1…Connected to 127.0.…

    2025年3月5日
    200
  • php需要什么基础知识

    本文为大家介绍学习php前需要掌握的基础知识。很多人认为php可以从零基础开始学习,也就是不用学其他任何东西就可以直接去学php。的确,php入门简单,与其他知识也不挂钩,可以零基础学起,不需要具备其他知识。但是以我看来,学习php前还是得…

    2025年3月5日
    200
  • php如何创建和读写文件?

    首先创建一个名称为file的php文件并添加标记。 创建一个txt文件的文件命名为myfile,用touch函数创建文件。运行后会在php所在的同级目录生成一个myfile文档文件。 立即学习“PHP免费学习笔记(深入)”; 相关推荐:《p…

    2025年3月5日 编程技术
    200
  • php如何获取手机型号

    手机App中判断平台,可以根据$_SERVER[‘HTTP_USER_AGENT’]中的内容来判断浏览器类型或手机平台。(推荐学习:PHP编程从入门到精通) iPhone UA:Mozilla/5.0 (iPhone…

    2025年3月5日
    200
  • php如何从服务器下载文件

    php下载服务器上的文件,可以通过自定义函数方法downtemplateaction()来实现下载,在其方法体内有判断文件是否存在以及是否成功下载、关闭文件等功能。 相关推荐:《php教程》 具体示例如下: /** * @todo 下载文件…

    2025年3月5日
    200
  • php如何获取手机位置

    php实现手机定位功能的实例 最近在做通过定位手机用户,进行消息推送,经过分析最终做法如下 mobile.php文件(推荐学习:PHP编程从入门到精通) 当用户当手机访问该页面时,通过实现页面表单隐藏封装自动提交获取手机浏览器经纬度并pos…

    2025年3月5日
    200
  • php如何获取表单数据

    在网页上经常要填写用户名和密码,点击确认按纽之后,用户名和密码经过前端处理之后发送到了服务器上,那么服务器端怎么获取到这些用户提交的数据呢?就是通过超级全局变量 _POST和_GET $_GET[](推荐学习:PHP编程从入门到精通) 描述…

    2025年3月5日
    200
  • php如何存excel数据到数据库

    一、使用php Excel Parser Pro软件,但是这个软件为收费软件; 二、可将EXCEL表保存为CSV格式,然后通过phpmyadmin或者SQLyog导入,SQLyog导入的方法为: ·将EXCEL表另存为CSV形式; ·打开S…

    2025年3月5日
    200

发表回复

登录后才能评论