0

我们遇到了这样一种情况,即用户注销并重播以前的良好会话 cookie(包括滑动时间窗口),并且我们的代码作为用户直接跳转到请求的页面。我们不在服务器中维护会话状态。此 Asp.Net 形成身份验证。

我在想唯一的解决方案是向服务器添加列以跟踪用户日志状态。不是很难,但需要代码、数据库和部署来完成。

这是处理这个问题的最好方法吗?由于无论如何我们都必须破解代码,我们可以将客户端请求 ip 和其他内容添加到 cookie 中。但是当前的欺骗是重用客户端机器以及会话。

有什么想法吗?

提前致谢

账单

检查非活动状态的 Javascript 代码 -> 注销

$j(document).ready(function () {

            /******************************************************************
            Auto-logout after the user's session times out
            ******************************************************************/

            var timeOut = (_TIMEOUT - 5) * 60;
            var setTimeout = function () {
                $j(".session-timeout").stopTime().oneTime(timeOut + "s", function () {
                    $j(this).show();
                    $j(this).oneTime("300s", function () {
                        window.location = $j(this).find("a.logout").attr("href");
                    });
                });
            };
            $j(".session-timeout a.refresh-session").click(function () {
                NextGen.CHS.UtilitiesWebService.RefreshSession(
                    function () {
                        $j(".session-timeout").fadeOut();
                        setTimeout();
                    },
                    function () {
                    }
                );
            });

            setTimeout();
        });

4

1 回答 1

0

我最终通过跟踪用户登录/注销状态和活动时间戳来解决这个问题。当接收到重放会话时,我们仍然解密表单票证并找到有效的“会话”信息。这可以识别用户,然后我们检查是否已注销,如果是,则重定向到登录页面。

对于用户在未注销的情况下杀死浏览器的情况,活动时间戳用于扫描用户表注销非活动用户的 sql 作业。

魏德森

于 2013-09-05T16:39:15.630 回答