预防 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(true); //②
$_SESSION['generated'] = time(); //③
}
说明:
① 设置 Session 定期更换的时间为 30 秒
② session_regenerate_id 方法可以在不修改当前会话数据的前提下使用新的 SessionID 代替原有的 SessionID;使用 true 作为参数时,原有的 session 文件会被删除。
参考《PHP经典实例》
预防 Session 劫持与 Session 固定攻击的更多相关文章
- 会话固定攻击 - yxcms session固定漏洞
目录 会话固定攻击 e.g. yxcms session固定攻击 分析 了解更多 会话固定攻击 Session fixation attack(会话固定攻击)是利用服务器的session不变机制,借他 ...
- PHP漏洞全解(七)-Session劫持
本文主要介绍针对PHP网站Session劫持.session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能. ...
- 漏洞:会话固定攻击(session fixation attack)
什么是会话固定攻击? 会话固定攻击(session fixation attack)是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会 ...
- session劫持以及预防
session劫持是一种广泛存在的比较严重的安全威胁,在session技术中,客户端和服务端通过session的标识符来维护会话, 但这个标识符很容易就能被嗅探到,从而被其他人利用.它是中间人攻击的一 ...
- 跨站脚本攻击XSS(二)——session劫持
转载自:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小 ...
- web系统之session劫持解决
session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持 可能. 两台主机要想进行TCP通信,必须经过一个三 ...
- SESSION劫持
服务端和客户端之间是通过session(会话)来连接沟通.当客户端的浏览器连接到服务器后,服务器就会建立一个该用户的session.每个用户的session都是独立的,并且由服务器来维护.每个用户的s ...
- XSS危害——session劫持
在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码.今天我们就介绍 ...
- cookie窃取和session劫持
Updates 2014-08-17 感谢@搞前端的crosser的提醒,加入了HTTP Response Splitting的内容. 此篇文章的Presentation戳这里. 一.cookie的基 ...
随机推荐
- Codeforces 335C Sorting Railway Cars
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- 修改WordPress中上传附件2M大小限制的方法/php+iis上传附件默认大小修改方法
在服务器上架设好WordPress后,使用过程中发现,上传附件大小有2M的限制 话说服务器就是本机,可以直接把文件拖到附件存储文件夹下,然后在需要附件的地方引用链接 可是这种落后的方法终究不是办法,还 ...
- POJ3184 Ikki's Story I - Road Reconstruction(最大流)
求一次最大流后,分别对所有满流的边的容量+1,然后看是否存在增广路. #include<cstdio> #include<cstring> #include<queue& ...
- TFS安装与管理
整了几天TFS,把相关的一些配置与安装的要点简单记下,希望对大家有用.本篇主要是安装与配置上的内容,下一篇会介绍如何使用以及使用方面的相关心得体会. 本篇内容简要: 1. 安装部署 1.1. 流 ...
- BZOJ3564 : [SHOI2014]信号增幅仪
先把所有点绕原点逆时针旋转(360-a)度,再把所有点横坐标除以放大倍数p,最后用随机增量法求最小圆覆盖即可. 时间复杂度期望$O(n)$ #include<cstdio> #includ ...
- 【ZOJ】1015 Fishing Net
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1015 题意:给出一个n个点的无向图,询问是否为弦图,弦图定义为对于图中任意 ...
- BZOJ3625: [Codeforces Round #250]小朋友和二叉树
Description 我们的小朋友很喜欢计算机科学,而且尤其喜欢二叉树.考虑一个含有n个互异正整数的序列c[1],c[2],...,c[n].如果一棵带点权的有根二叉树满足其所有顶点的权值都在集合{ ...
- tomcat、Linux服务器
tomcat.Linux服务器 用到的命令 解压命令: tar -zxvf 文件名 配置 : vi /etc/profile 按 i 进入 ...
- HBase1.0以上版本的API改变
HBase1.0以上版本已经废弃了 HTableInterface,HTable,HBaseAdmin等API的使用,新增了一些API来实现之前的功能: Connectioninterface: Co ...
- PHP5中魔术方法
魔术函数 1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct() ...