【问题标题】:Session hijacking or attack?会话劫持还是攻击?
【发布时间】:2009-09-23 08:39:53
【问题描述】:

最近我在错误日志中看到了这一点(每天 1 个,每天有 40k 访问者):

[22-Sep-2009 21:13:52] PHP Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /var/my_files/class.session.php on line 67 
[22-Sep-2009 21:13:52] PHP Warning: Unknown: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in Unknown on line 0 
[22-Sep-2009 21:13:52] PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0

这不是配置问题,因为它适用于所有人。

我已经修改了 php.ini 有这个:

session.use_only_cookies = 1
session.use_trans_sid = 0

我怀疑会话劫持或我不知道的某种攻击(我是偏执狂;))。

你知道它可能是什么吗?我可以做些什么来提高安全性并避免这种情况?

【问题讨论】:

    标签: php session cookies session-hijacking


    【解决方案1】:

    这里很可能是这个客户端改变了 PHPSESSID cookie 的内容。通常 SessionID 类似于“62bf75fb02922cf9c83fb3521255b4ab”(十六进制)

    但是,用户可能已经使用某些工具修改了 cookie。这不会对您的网站和服务器造成损害,因为此修改是在客户端完成的,这样做不会影响服务器(产生这些错误除外)。您可以做的是,当您收到此类错误时,您更改会话 ID 并替换客户端上的那个。

    查看解决方案:

    $ok = @session_start();
    if(!$ok){
      session_regenerate_id(true); // replace the Session ID
      session_start(); // restart the session (since previous start failed)
    }
    

    请记住,您不能通过 PHP 会话 cookie 将文件替换或写入服务器。只有当会话成功启动时,PHP 才会写入一个关于当前会话的 Session 文件并将其存储到 tmp 文件夹中。一旦文件变旧,文件就会被删除。

    【讨论】:

      【解决方案2】:

      这很可能是由垃圾邮件机器人引起的。我看到很多垃圾邮件机器人被发送一个会话 ID 作为 GET 参数,然后他们尝试将其用于 SMTP 注入或发送电子邮件。我会尝试从我的日志中的某个地方找到证据,但我知道它至少在十几个网站上发生在我身上。当我看到它时,GET 变量看起来像:?sid=v14gra@spam.com\n\subject:blah blah blah\n\nspam email here etc...

      【讨论】:

        【解决方案3】:

        最好的猜测是有人在他们的会话 cookie 中有一个错误的会话 ID 并导致了错误。

        我看不出有人会如何使用无效的会话 ID 进行会话劫持。

        如果你想重现错误:

        <?php
        error_reporting(E_ALL);
        session_start();
        session_id ("$");
        

        【讨论】:

        • 此人是否试图在服务器上写东西/替换文件?
        猜你喜欢
        • 1970-01-01
        • 2021-11-03
        • 2011-09-22
        • 1970-01-01
        • 1970-01-01
        • 2012-08-27
        • 2012-04-17
        • 1970-01-01
        相关资源
        最近更新 更多