预防 Session 劫持与 Session 定置攻击

一、预防 Session 劫持

要求:

① 只允许通过 Cookie 来传递 SessionID

② 生成一个由 URL 传递的唯一标识作为 Session 的标记(token)

当请求同时包含有效的 SessionID 和 有效的 Session token 时,才能进一步访问该 Session

代码:

    $salt = ‘mySessionToken‘;
    $tokenstr = date(‘W‘).$salt;
    $token = md5($tokenstr); //①

    if(!isset($_REQUEST[‘token‘]) || $_REQUEST[‘token‘] != $token) { //②
        //提示登陆
        exit;
    }

    $_SESSION[‘token‘] = $token; output_add_rewrite_var(‘token‘, $token); //③

说明:

① token 包含两个部分,盐(一个自定义的字符串)和一个在一段时间内不发生变化的字符串(可以用时间日期函数)

② 当请求的 URL 中不包含 token 或者 token 不正确时,提示用户登录

output_add_rewrite_var 方法用于给 URL 重写机制添加新的键/值参数,例如原 URL 为 http://serverName,使用 output_add_rewrite_var(‘token‘, $token) 后 URL 变成了 http://serverName/token/b12a9d8237b3b29dd94a06e42a7d9b5f

二、预防 Session 定置

要求:

① 只允许通过 Cookie 来传递 SessionID,使攻击者基于 URL 攻击的可能性为零

② 在一定时间内生成新的有效 SessionID,使攻击者获取有效 SessionID 的机会降低

代码:

    if(!isset($_SESSION[‘generated‘]) || $_SESSION[‘generated‘] < (time() - 30)) { //①
        session_regenerate_id(); //②
        $_SESSION[‘generated‘] = time(); //③
    }

说明:

① 设置 Session 定期更换的时间为 30 秒

② session_regenerate_id 方法可以在不修改当前会话数据的前提下使用新的 SessionID 代替原有的 SessionID

参考《PHP经典实例》

时间: 2024-11-13 20:24:13

预防 Session 劫持与 Session 定置攻击的相关文章

PHP漏洞全解(七)-Session劫持

本文主要介绍针对PHP网站Session劫持.session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能. 服务端和客户端之间是通过session(会话)来连接沟通.当客户端的浏览器连接到服务器后,服务器就会建立一个该用户的session.每个用 户的session都是独立的,并且由服务器来维护.每个用户的session是由一个独特的字符串来识别,成为session id.用户发出请求时,所发送的htt

session劫持以及预防

session劫持是一种广泛存在的比较严重的安全威胁,在session技术中,客户端和服务端通过session的标识符来维护会话, 但这个标识符很容易就能被嗅探到,从而被其他人利用.它是中间人攻击的一种类型. 本节将通过一个实例来演示会话劫持,希望通过这个实例,能让读者更好地理解session的本质. session劫持过程 我们写了如下的代码来展示一个count计数器: func count(w http.ResponseWriter, r *http.Request) { sess := g

跨站脚本攻击XSS(二)——session劫持

转载自:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码.今天我们就介绍一种危害更大的XSS--session劫持. 神马是session 想明白session劫持及其危害,首先要搞清楚什么是session,熟悉http的同学知道,http是无状态的,也就是客户端向服务

cookie窃取和session劫持

[转]cookie窃取和session劫持 Updates 2014-08-17 感谢@搞前端的crosser的提醒,加入了HTTP Response Splitting的内容. 此篇文章的Presentation戳这里. 一.cookie的基本特性 如果不了解cookie,可以先到wikipedia上学习一下. http request 浏览器向服务器发起的每个请求都会带上cookie: Host: www.example.org 2.Cookie: foo=value1;bar=value2

Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗、嗅探、dns欺骗、session劫持

Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗.嗅探.dns欺骗.session劫持 文/玄魂 目录 Kali Linux Web 渗透测试—第十四课-arp欺骗.嗅探.dns欺骗.session劫持      1 关于嗅探.arp欺骗.会话劫持.............................................................. 1 视频教程地址:http://edu.51cto.com/course/course_id-1887.h

XSS危害——session劫持

在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码.今天我们就介绍一种危害更大的XSS--session劫持. 神马是session 想明白session劫持及其危害,首先要搞清楚什么是session,熟悉http的同学知道,http是无状态的,也就是客户端向服务器请求完成后,会断开连接,下次同一个客户端再次访问服务器的时候,服务器会把它当作一个陌生的请求,不会知

SESSION劫持

服务端和客户端之间是通过session(会话)来连接沟通.当客户端的浏览器连接到服务器后,服务器就会建立一个该用户的session.每个用户的session都是独立的,并且由服务器来维护.每个用户的session是由一个独特的字符串来识别,成为session id.用户发出请求时,所发送的http表头内包含session id 的值.服务器使用http表头内的session id来识别时哪个用户提交的请求. session保存的是每个用户的个人数据,一般的web应用程序会使用session来保存

Cookie , Session ,Session 劫持简单总结

cookie 机制: Cookies 是 服务器 在 本地机器 上存储的 小段文本,并伴随着 每一个请求,发送到 同一台 服务器. 网络服务器 用 HTTP头 向客户端发送 Cookies.在客户端,浏览器解析这些 cookies 并将它们保存成为一个本地文件,他会自动将同一台服务器的任何请求附上这些 cookies. 因为 HTTP 是一种无状态的协议,而cookie机制采用的是在客户端保持状态的方案,session 是在服务端保持状态的协议.Cookies是在用户端的会话状态的存贮机制,他需

XSS危害——session劫持(转载)

在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码.今天我们就介绍一种危害更大的XSS--session劫持. 神马是session 想明白session劫持及其危害,首先要搞清楚什么是session,熟悉http的同学知道,http是无状态的,也就是客户端向服务器请求完成后,会断开连接,下次同一个客户端再次访问服务器的时候,服务器会把它当作一个陌生的请求,不会知