Session和数据保持:

一.使用session跟踪:

使用session模块,session_start()函数初始化一个session,并可以通过自动全局数组$_SESSION访问,通过PHP程序保持对相应变量的跟踪、

默认情况下,PHP把session数据保存在服务器端的/tmp文件夹下,每个session都保存为其自己的文件。要想改变保存文件的路径,可以把php.ini文件中的session.save_path配置指令设置为新的指令,也可以通过ini_set()函数来设置新路径


二.预防Session劫持:

方案:只允许通过cookie来传递sessionID,同时生成一个由URL传递的额外session记号。只有当请求包含有效的sessionID和有效的session记号,才可以访问该session。

<?php
ini_set('session.use_only_cookies', true);
session_start();

$salt = 'YourSpecialValueHere';
$tokenstr = (str) date('W').$salt;
$token = md5($tokenstr);

if (!isset($_REQUEST['token']) || $_REQUEST['token'] != $token) {
	// 提示用户登录
	exit();
}

$_SESSION['token'] = $token;

output_add_rewrite_var('token', $token);
?>
通过当前星期的数字与你的特殊话连接起来,经过md5加密,创建了一个记号,记号可以在一定的时间内使用而不必修改。

当我们检查到请求中没有包含这个记号时,我们会提示用户登录。

如果有这个记号,就把它附加到生成的链接上。用output_add_rewrite_var()函数


三.预防session定置

要求不会把session标识符附加到URL上的session cookie,并且频繁的生成新的sessionID。

<?php
ini_set('session.use_only_cookies', true);
session_start();
if (!isset($_SESSION['generate']) || $_SESSION['generate'] < (time() - 30)) {
	session_regenerate_id();
	$_SESSION['generate'] = time();
}
?>

当session启动后,我们设置了一个值,用于记录上次生成sessionID的时间,通过请求一个定期(本例30s)生成的新ID,使得攻击者获取有效的sessionID的机会大大降低。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值