相关疑难解决方法(0)

在基于浏览器的应用程序中保存JWT的位置以及如何使用它

我正在尝试在我的身份验证系统中实现JWT,我有几个问题.要存储令牌,我可以使用cookie,但也可以使用localStoragesessionStorage.

哪个是最好的选择?

我已经读过JWT保护网站免受CSRF的侵害.但是,我无法想象假设我将JWT令牌保存在cookie存储中会如何工作.

那么它将如何保护CSRF?

更新1
我看到了一些使用示例,如下所示:

curl -v -X POST -H "Authorization: Basic VE01enNFem9FZG9NRERjVEJjbXRBcWJGdTBFYTpYUU9URExINlBBOHJvUHJfSktrTHhUSTNseGNh"
Run Code Online (Sandbox Code Playgroud)

当我从浏览器向服务器发出请求时,如何实现?我还看到有些人在URL中实现了令牌:

http://exmple.com?jwt=token
Run Code Online (Sandbox Code Playgroud)

如果我通过AJAX发出请求,那么我可以设置一个标题jwt: [token],然后我可以从标题中读取标记.

更新2

我安装了高级REST客户端谷歌浏览器扩展,并能够将令牌作为自定义标头传递.在向服务器发出GET请求时,是否可以通过Javascript设置此标头数据?

javascript security cookies web-services jwt

41
推荐指数
5
解决办法
3万
查看次数

如何从Ajax调用修改Cookie

我有这个代码:

window.onload = function() {
        document.cookie = 'foo=bar; expires=Sun, 01 Jan 2012 00:00:00 +0100; path=/';
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "/showcookie.php",true);
        xhr.setRequestHeader("Cookie", "foo=quux");

        xhr.setRequestHeader("Foo", "Bar");
        xhr.setRequestHeader("Foo", "Baz");

        xhr.withCredentials = true;
        var pre = document.getElementById('output');
        xhr.onreadystatechange = function() {
            if (4 == xhr.readyState) {
                pre.innerHTML += xhr.responseText + "\n";
            }
        };
        xhr.send(null);
    };
Run Code Online (Sandbox Code Playgroud)

这个/showcookie.php

<?php

print_r($_COOKIE);

?>
Run Code Online (Sandbox Code Playgroud)

它总是显示出来

Array
(
    [Host] => localhost
    [User-Agent] => 
    [Accept] => 
    [Accept-Language] => pl,en-us;q=0.7,en;q=0.3
    [Accept-Encoding] => gzip,deflate
    [Accept-Charset] => ISO-8859-2,utf-8;q=0.7,*;q=0.7
    [Keep-Alive] => 115
    [Connection] …
Run Code Online (Sandbox Code Playgroud)

javascript cookies xmlhttprequest

14
推荐指数
1
解决办法
1万
查看次数