一个与会话暴露类似的问题是会话注入。此类攻击是基于你的WEB服务器除了对会话存储目录有读取权限外,还有写入权限。因此,存在着编写一段允许其他用户添加,编辑或删除会话的脚本的可能。下例显示了一个允许用户方便地编辑已存在的会话数据的HTML表单:
07 |
<form action="inject.php" method="POST"> |
11 |
$path = ini_get('session.save_path'); |
14 |
while ($filename = $handle->read()) |
16 |
if (substr($filename, 0, 5) == 'sess_') |
18 |
$sess_data = file_get_contents("$path/$filename"); |
20 |
if (!empty($sess_data)) |
22 |
session_decode($sess_data); |
23 |
$sess_data = $_SESSION; |
26 |
$sess_name = substr($filename, 5); |
27 |
$sess_name = htmlentities($sess_name, ENT_QUOTES, 'UTF-8'); |
28 |
echo "<h1>Session [$sess_name]</h1>"; |
30 |
foreach ($sess_data as $name => $value) |
32 |
$name = htmlentities($name, ENT_QUOTES, 'UTF-8'); |
33 |
$value = htmlentities($value, ENT_QUOTES, 'UTF-8'); |
37 |
name=\"{$sess_name}[{$name}]\" |
51 |
<input type="submit" /> |
脚本inject.php执行由表单所指定的修改:
05 |
$path = ini_get('session.save_path'); |
07 |
foreach ($_POST as $sess_name => $sess_data) |
09 |
$_SESSION = $sess_data; |
10 |
$sess_data = session_encode; |
12 |
file_put_contents("$path/$sess_name", $sess_data); |
此类攻击非常危险。攻击者不仅可以编辑你的用户的数据,还可以编辑他自己的会话数据。它比会话劫持更为强大,因为攻击者能选择所有的会话数据进行修改,从而使绕过访问限制和其他安全手段成为可能。
针对这个问题的最好解决方案是将会话数据保存在数据库中。
- 会话数据的管理——Session
cookie的局限性: cookie只能存字符串类型.不能保存对象 只能存非中文 1个cookie的容量不超过4KB(如果要保存非字符串,超过4kb内容,只能使用session技术!!!) Sessi ...
- 会话数据的保存——cookie
会话的理解 可以简单的理解为:用户打开浏览器,访问多个web资源,然后关闭浏览器,这个过程可以称为一次会话 有状态会话:可以简单理解为一个同学来了这个教室,下一次再来我们知道他来过这个教室,我们可以称 ...
- 怎样获取浏览器上次的会话数据(session)
怎样获取浏览器上次的会话数据: 要知道上次会话session_id是多少? 让cookie保存的PHPSESSID的值不要浏览器一退出就被删除了? 所以我们要设置自己的session_id,不要系统自 ...
- fiddler之会话数据的修改
fiddler之会话数据的修改 fiddler记录http的请求,并且针对特定的http请求,可以分析请求数据.修改数据.调试web系统等,功能十分强大.本篇主要讲两种修改的数据的方法,断点和Unlo ...
- Spring依赖注入servlet会话监听器
Spring提供了一个 “ContextLoaderListener” 监听器,以使 Spring 依赖注入到会话监听器. 在本教程中,通过添加一个 Spring 依赖注入一个bean 到会话监听器修 ...
- 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(4)-会话面板和HTTP会话数据操作详解
1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的会话面板了. 2.会话列表 (Session list) 概览 Fiddler抓取到的每条http请求(每一条称为一个ses ...
- JDBC编程之数据查询
----------------siwuxie095 JDBC 编程之数据查询 首先下载 MySQL 的 JDBC 驱动 ...
- php 会话控制(Session会话控制)
php的session会话是通过唯一的会话ID来驱动的,会话ID是一个加密的随机数字,由php生成,在会话的生命周期中都会保存在客户端.客户端保存数据的地方只有cookie,所以php的会话ID一般保 ...
- Hibernate api 之常见的类(配置类,会话工厂类,会话类)
1:Configuration :配置管理类对象 1.1:config.configure(): 加载主配置文件的方法(hibernate.cfg.xml) ,默认加载src/hibernate.cf ...
随机推荐
- mysql数据类型——TEXT和Blob
TEXT是 以文本方式存储的,如果存储英文的话区分大小写 Blob是以二进制方式存储的,不区分大小写. xxxBlob存储的数据只能整体读出 有4种text类型:tinytext.text.medi ...
- TCP/IP 三次握手和四次握手
三次握手建立连接: 第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己 ...
- Keil c51现No Browse information available
keil c51 不能使用:Go to Definition of....的解决方法 最近使用keil c51 开发usb固件,当向vc一样使用Go to Definition of....时,出现警 ...
- Unity NGUI 3.0.4版本 制作网络版斗地主
Unity NGUI 3.0.4版本 @by 灰太龙 开发环境 Win7旗舰版 Unity 4.2.1f4 本文就写个开门篇,告诉大家怎么用NGUI,第一步导入NGUI 3.0.4版本! 1.启动U ...
- 跨进程发送消息数据(发送WM_COPYDATA消息,够简单的)
1 //1.发送窗体 2 procedure TForm2.Button1Click(Sender: TObject); 3 var 4 h: HWND; 5 Size: Integer; 6 Cop ...
- [置顶] export命令-linux
export 命令 功能说明: 设置或显示环境变量. 语 法: export [-fnp][变量名称]=[变量设置值] 补充说明: 在shell中执行程序时,shell会提供一组环境变量. expor ...
- python对拍程序
import sys; import random; import os; gen=open("data.in","w"); #///生成测试数据 gen.cl ...
- 数据结构(左偏树,可并堆):BNUOJ 3943 Safe Travel
Safe Travel Time Limit: 3000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class ...
- 后缀数组:HDU1043 Longest Common Substring
Longest Common Substring Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- 检测CPU是否支持虚拟化
一:下载检测软件 地址:http://files.cnblogs.com/hongmaju/Coreinfo.rar 二:使用方法 打开运行窗口,找到Coreinfo.exe,运行如下: 现在你要做的 ...