IT技术博客大学习 共学习 共进步
首页 / 360weboy
IT 2013-09-07 15:39:56 / 累计浏览 5,360

深入浅出Session攻击方式之一 – 固定会话ID

这篇技术文章聚焦于Web安全中一种具体且危险的攻击手法:固定会话ID(Session Fixation)。作者从PHP应用普遍面临的安全挑战入手,深入剖析了攻击者如何诱使用户使用其预设的Session ID来访问系统,从而实现会话劫持。 文章不仅阐述了攻击原理——即攻击者通过URL参数(如`?PHPSESSID=1234`)等手段固定一个会话标识,并用直观的代码示例和测试过程演示了其危害性:只需访问特定链接,新浏览器就能“继承”之前浏览器的会话状态。更关键的是,文章给出了明确的防御方案:核心在于在用户登录、权限变更等关键节点,及时调用`session_regenerate_id()`函数重新生成Session ID,彻底切断攻击者的预设路径。 作者还进一步探讨了经验更丰富的攻击者可能先自行获取合法Session ID再实施固定攻击的场景,强调了防御措施需具备时效性和全面性。整篇文章由原理到实践,再到防御升级,为开发者提供了一份清晰的攻防路线图。

IT 2013-07-31 13:33:06 / 累计浏览 4,380

Php session内部执行流程的再次剖析

这篇讲的是PHP session扩展在底层的完整执行流程。作者从技术实现的角度,将session的整个生命周期拆解成了几个清晰的阶段。 首先,文章指出了一个核心概念:PHP session本质上是一个内核扩展。当它加载时,PHP会做两件关键的事:初始化用于读写session数据的`save_handler`(默认是文件,但也支持自定义),以及根据`session.auto_start`配置决定是否自动开启session。 接下来,重点剖析了session启动时的具体逻辑。如果客户端是首次访问(请求中没有session ID),PHP会生成唯一的ID并通过Set-Cookie头部下发。如果携带了session ID,则会执行一系列严谨的操作:从Cookie中提取ID、调用`save_handler`的`open`接口、验证并注册`$_SESSION`全局数组,最后通过`read`接口(如从文件或数据库)加载序列化的数据到数组中。 文章的收尾部分解释了请求结束时的数据持久化过程:PHP会收集`$_SESSION`数组的变化,将其序列化后,通过`write`接口存储起来。 整体来看,作者没有停留在概念层面,而是深入到内核函数的调用顺序和数据流转,将看似黑盒的session机制剖析得条理分明。对于想理解PHP底层工作原理的开发者来说,这是一次扎实的流程拆解。

IT 2013-07-08 22:45:40 / 累计浏览 2,740

剖析网页字符集的设置顺序

这篇讲的是作者从一次电商网站数据迁移中遇到的顽固乱码问题出发,深入排查并最终厘清了网页字符集设置的优先级顺序。问题根源在于,影响浏览器字符集解读的因素不止一个,而开发者往往不清楚它们之间的覆盖关系。 作者通过实际测试,逐一验证了五种设置方式:文件编码、Apache2默认配置、PHP.ini配置、PHP脚本中的header函数以及HTML的meta标签。他设计了一个清晰的对比实验,例如同时设置header为gb2312、meta为utf8,观察显示结果,从而确定了基本的优先级。 最关键的发现在于,当服务器端的PHP.ini或Apache配置介入后,情况会变得更复杂。测试表明,php.ini中的默认字符集设置优先级最高,它会覆盖header函数的输出;而Apache2的默认设置优先级则高于meta标签,但低于header函数。 最终,文章得出了一个非常实用的优先级排序:php.ini默认设置 > header函数设置 > Apache2默认设置 > meta标签设置。搞清楚这个顺序,对于彻底解决因字符集配置冲突导致的乱码问题,提供了明确的排查路径。

IT 2013-01-10 22:38:47 / 累计浏览 18,240

深入理解Javascript之执行上下文(Execution Context)

这篇讲的是JavaScript中最核心但常被忽略的概念——执行上下文。作者从代码的运行环境切入,清晰地将执行上下文划分为全局、函数和Eval三种类型,并指出它是理解变量提升、作用域等行为的钥匙。 文章用一个函数调用图,生动展示了多个执行上下文是如何像栈一样被管理的:单线程的JavaScript引擎在执行代码时,每调用一个函数就会创建一个新的上下文并压栈,执行完毕后再弹出。这种“堆栈”模型解释了代码执行的严格顺序。 更深入地,作者剖析了执行上下文创建时的两个关键阶段。在真正的代码执行前,引擎会先进入“建立阶段”,完成变量与函数的声明、作用域链的构建以及this值的确定。这正解释了为什么函数内的变量可以在声明前被访问(值为undefined),而函数却可以立即调用。 通过对堆栈机制和建立阶段的拆解,文章把抽象的引擎内部行为变得可视化,帮助开发者从根本上理解代码的运行逻辑。

IT 2012-11-13 13:52:34 / 累计浏览 11,300

你必须了解的Session的本质

这篇讲的是PHP中Session的本质与安全陷阱。作者从HTTP协议无状态性这一底层特性切入,解释了为什么我们需要Session来维持应用状态。他详细拆解了Cookie作为HTTP扩展的工作原理,以及Session ID如何在客户端与服务器之间传递——无论是通过自动的Set-Cookie头,还是通过URL参数或POST数据。 文章特别强调,许多开发者误以为PHP内置的Session机制自动提供了安全性,但事实并非如此。作者通过一个具体的会话劫持攻击示例(攻击者窃取并重放PHPSESSID),清晰地展示了如果仅依赖默认机制,会话数据将面临风险。他指出,安全必须由开发者主动加固,而非框架自动保障。 整体上,这篇文章像一份面向PHP开发者的安全指南,从协议基础讲到实战风险,核心观点是:理解Session背后的网络交互细节,是构建安全会话管理的第一步。