对联 ·故事 ·史海钩沉 ·人物档案 ·地方风俗 ·谚语大全 ·讽刺与幽默 · 赚钱 · 法律 · 在线教研 · 会员中心 · 心理测试 · 魔鬼词典 · 顺口溜
 
主页特效 网页特效 百家姓
娱乐 歇后语 绕口令 脑筋急转弯
 
谚语 谜语 名言 邮政编码
便民 酒方 验方 偏方 站长工具  
 
算命 风俗 手相 爱情
女孩 音乐 面相 星座 血型
 
饮食 穴道 偏方 医药
生活 软件 硬件 解梦 高考



   JS特效



实用工具
便民服务 加密解密
 
魅力高密 民间故事 Flash教程 PS教程 最新国内新闻
新华字典 黄道吉日 英语园地  万年历 Html2anycode
  首页 | 美图 | 短信 | 安全 | 校园 | 网站 | 游戏 | UFO | 文秘 | 生活 | 信息技术 | 论文 | 人生 | 情感 | 日记
返回首页
当前位置: 主页 > 网站建设 >

php session会话的安全性

时间:2011-02-17 14:31来源:盼盼的家园 作者:红高粱 点击:
php session会话的安全性 会话的用途常常是帮助用户在Web应用程序的各个部分之间跳转,从而达到方便快捷的目的,但是它在存储信息的时候往往会有一些敏感的东西,这些东西可能成为
  

php session会话的安全性

会话的用途常常是帮助用户在Web应用程序的各个部分之间跳转,从而达到方便快捷的目的,但是它在存储信息的时候往往会有一些敏感的东西,这些东西可能成为被攻击的目标,如银行的账号、信用卡事务或档案记录等。这就要求在编写代码的时候必须采取安全措施来减少攻击成功的可能性。
主要的安全措施有以下两个方面。
 

防止攻击者获取用户的会话ID
获取会话ID的方式很多,攻击者可以通过查看明文通信来获取,所以把会话ID放在URL中或者放在通过未加密连接传输的Cookie中是很危险的;还有在URL中(作为_get()参数)传递会话ID也是不安全的,因为浏览器历史缓存中会存储URL,这样就很容易被读取。
还有一种更为隐蔽的攻击手段,攻击者通过一个被脚本攻击突破的Web站点,把被突破的这个站点上的用户重新定向到另一个站点,然后在重新定向的站点的URL中插入以下代码:
?PHPSESSID=213456465412312365465412312;
最后发送到Web应用程序。当用户查看Web应用程序时,PHP会发现没有与这个会话ID相关联的数据并且会创建一些数据。用户不知道发生了什么,但攻击者却知道了会话ID,就可以利用这个会话ID进入应用程序。
要防止这种攻击,有两种方法。
(1)检查php.ini中是否打开了session.use_only_cookie。如果是这种情况,PHP会拒绝基于URL的会话ID。
(2)当启动会话时,在会话数据中放一个变量,这个变量表示会话是用户创建的;如果发现会话数据中没有这个变量,那就说明会话ID是假的,就可以调用session_regenerate_id函数,给现有会话分配一个新的会话ID。
示例:
通过判断变量是否存在来确定会话ID的真假,如果存在,则说明会话ID是真的,否则是假的,并使用session_regenerate_id()函数对会话ID进行更改,重新给会话创建一个新的会话ID,代码如下:
<?php  session_start () ;
if  (!isset ( $_SESSION['shili1'] )) {     //判断shili1变量是否配置
$old_id = session_id () ;            //原来的会话ID的变量名
session_regenerate_id () ;           //获取一个新的会话ID
$new_id = session_id () ;           //新的会话ID的变量名
echo "old : $old_id<br/>" ;          //输出原来的会话ID
echo "new : $new_id<br/>" ;        //输出新的会话ID
$_SESSION['shili1'] = TRUE ;   }
?>

运行结果如下图所示。


判断会话ID的真伪

 

这只是一个示例,输出会话ID是为了更好的理解和应用这个函数,而在程序设计中是不需要输出会话ID的。

顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
赞助商位置
推荐内容
杂七杂八