Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Javascript 在前端注销时,如何在浏览器中撤销仅Http cookie? 在前端注销时,如何在浏览器中撤销仅Http cookie? 情况: 我为服务器上已登录的用户设置了身份验证cookie 标记为Http的cookie仅用于防止XSS攻击 cookie设置3个月到期,以防止每次输入凭证 有时,当用户单击注销按钮时,由于未知原因,网络无法工作,因此浏览器会在用户注销后保留该cookie 为了防止这种情况发生,我必须在用户单击注销按钮后强制浏览器撤销cookie 但是管理员告诉我,我没有更改仅Http cookies的权限_Javascript_Node.js_Cookies_Session Cookies - Fatal编程技术网

Javascript 在前端注销时,如何在浏览器中撤销仅Http cookie? 在前端注销时,如何在浏览器中撤销仅Http cookie? 情况: 我为服务器上已登录的用户设置了身份验证cookie 标记为Http的cookie仅用于防止XSS攻击 cookie设置3个月到期,以防止每次输入凭证 有时,当用户单击注销按钮时,由于未知原因,网络无法工作,因此浏览器会在用户注销后保留该cookie 为了防止这种情况发生,我必须在用户单击注销按钮后强制浏览器撤销cookie 但是管理员告诉我,我没有更改仅Http cookies的权限

Javascript 在前端注销时,如何在浏览器中撤销仅Http cookie? 在前端注销时,如何在浏览器中撤销仅Http cookie? 情况: 我为服务器上已登录的用户设置了身份验证cookie 标记为Http的cookie仅用于防止XSS攻击 cookie设置3个月到期,以防止每次输入凭证 有时,当用户单击注销按钮时,由于未知原因,网络无法工作,因此浏览器会在用户注销后保留该cookie 为了防止这种情况发生,我必须在用户单击注销按钮后强制浏览器撤销cookie 但是管理员告诉我,我没有更改仅Http cookies的权限,javascript,node.js,cookies,session-cookies,Javascript,Node.js,Cookies,Session Cookies,那么,如何撤销仅Http的cookie? 或者,我在服务器上的会话配置中遗漏了什么吗?有一个解决方法: 每当用户单击注销按钮时,为网站的域设置一个新的、单独命名的cookie,该cookie向web服务器指示用户的仅HTTP cookie应在下一个成功HTTP请求时立即过期(例如,使我的会话cookie过期)。最后,在服务器中,添加一个中间件、请求拦截器或HTTP模块(我不知道您使用的是什么服务器端平台),用于检查此expire my session cookie),如果存在,则将请求重定向或重

那么,如何撤销仅Http的cookie?
或者,我在服务器上的会话配置中遗漏了什么吗?

有一个解决方法:

每当用户单击注销按钮时,为网站的域设置一个新的、单独命名的cookie,该cookie向web服务器指示用户的仅HTTP cookie应在下一个成功HTTP请求时立即过期(例如,
使我的会话cookie过期
)。最后,在服务器中,添加一个中间件、请求拦截器或HTTP模块(我不知道您使用的是什么服务器端平台),用于检查此
expire my session cookie
),如果存在,则将请求重定向或重写到真正的注销处理程序,以完成使任何仅HTTP cookie过期的任务

我认为这里不存在任何安全风险,因为如果您的站点确实存在脚本注入漏洞,那么恶意脚本可以通过设置
window.location=”来单方面注销您的用户http://your/logoff/page“

在呈现的HTML中类似于以下内容:

<a href="/logoff" onclick="document.cookie = 'expire-my-session-cookie=true'; return true;">logoff</a>

类似这样的HTTP中间件(即在每个请求上执行,静态文件和资产除外):

(伪代码)

函数(下一步){
if(request.cookies[“使我的会话cookie过期”]=“true”){
//将用户的所有cookie设置为立即过期:
for(int i=0;i
当用户单击注销按钮时,网络因未知原因无法工作
-修复此问题-除非您的意思是有时会发生这种情况,而不是永久性问题。或者,在客户端代码中设置cookie,以表示客户端已注销。请对此半相关问题执行任何回答n帮助?当这是一个客户端问题时,为什么这个问题被标记为
nodejs
?因为我不知道这是否是一个问题,我在服务器端@dai上遗漏了什么。非常感谢你的回答。这非常清楚。我正在前端编写一个单页web应用程序,在后端使用node.js+express。这取决于你的答案,但是w如果坏人在我注销失败后从我的浏览器复制了cookie,并且在他的下一个操作中不将指定的cookie发送到伪造我的服务器。也许,我不应该只为身份验证cookie设置http@欧阳维杰 如果坏人复制了你的Cookie,那么你绝对无能为力,你已经丢失了。这就是为什么只将“机密”Cookie(如身份验证令牌)作为HTTP保存很重要的原因。但是有一个“请注销我”-cookie作为非HTTP only是可以的,因为它不会向攻击者提供任何有用的信息。因此,我的想法是这样的。我需要为已登录的用户设置两个cookie。一个用于身份验证,一个用于“请注销我”。当用户执行某些个人操作时,服务器端将检查这两个cookie?
function( next ) {

    if( request.cookies["expire-my-session-cookie"] == "true" ) {

        // Set all of the user's cookies to expire immediately:
        for( int i = 0; i < request.cookies.length; i++ ) {

            response.cookies.setCookie( request.cookies[i].name, "", expires: 1970-01-01 );
        }

        return response.redirect( 'logoff-handler' );
    }
    else {

        // Otherwise continue as normal:
        return next();
    }