Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.Net表单身份验证重播攻击_Asp.net_Authentication_Webforms_Replay - Fatal编程技术网

Asp.Net表单身份验证重播攻击

Asp.Net表单身份验证重播攻击,asp.net,authentication,webforms,replay,Asp.net,Authentication,Webforms,Replay,我们遇到了这样一个场景:一个用户注销,并重放上一个良好的会话cookie(包括滑动时间窗口),我们的代码作为用户直接跳转到请求的页面。我们没有在服务器中维护会话状态。此Asp.Net表单验证 我认为唯一的解决方案是向服务器添加列以跟踪用户日志状态。不是很难,但需要代码、数据库和部署来完成 这是最好的处理方法吗?因为我们无论如何都要破解代码,所以我们可以将客户端请求ip和其他东西添加到cookie中。但是当前的欺骗是重用客户端机器和会话 有什么想法吗 提前谢谢 比尔 检查不活动->注销的Javas

我们遇到了这样一个场景:一个用户注销,并重放上一个良好的会话cookie(包括滑动时间窗口),我们的代码作为用户直接跳转到请求的页面。我们没有在服务器中维护会话状态。此Asp.Net表单验证

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

这是最好的处理方法吗?因为我们无论如何都要破解代码,所以我们可以将客户端请求ip和其他东西添加到cookie中。但是当前的欺骗是重用客户端机器和会话

有什么想法吗

提前谢谢

比尔

检查不活动->注销的Javascript代码


$j(文档).ready(函数(){


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

对于用户在未注销的情况下关闭浏览器的情况,活动时间戳将用于sql作业,该作业将清除注销非活动用户的用户表


weidson

当用户注销时,它只是在当前页面上进行回发,还是转到注销页面?通过重播攻击,您知道来自单独计算机的攻击者,或者您说的是同一台计算机的攻击者,能够做到这一点?有两种方法。客户端超时导致ajax调用,从而使会话无效。单击注销时进行常规回发此外,攻击来自同一台机器(可能是IP/MAC欺骗)我们有登录的用户做注销并把机器留给另一个用户。你可能想考虑使用JavaScript重定向到注销页面,而不是使用Ajax,通过<代码>窗口。位置=“LogOut.ASPX”;< /C> >我用检查非活动客户端的JavaScript代码编辑原始问题。
            /******************************************************************
            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();
        });