我知道基于cookie的身份验证.可以应用SSL和HttpOnly标志来保护来自MITM和XSS的基于cookie的身份验证.但是,需要采取更多特殊措施以保护其免受CSRF的影响.它们有点复杂.(参考)
最近,我发现JSON Web Token(JWT)作为身份验证的解决方案非常热门.我知道有关编码,解码和验证JWT的内容.但是,我不明白为什么有些网站/教程在使用JWT时不需要CSRF保护.我已经阅读了很多,并试图总结下面的问题.我只是希望有人可以提供JWT的全貌并澄清我对JWT误解的概念.
如果JWT存储在cookie中,我认为它与基于cookie的身份验证相同,除了服务器不需要有会话来验证cookie /令牌.如果没有实施特殊措施,CSRF仍存在风险.JWT不是存储在cookie中吗?
如果JWT存储在localStorage/sessionStorage中,那么没有cookie所以不需要防止CRSF.问题是如何将JWT发送到服务器.我发现这里建议使用jQuery通过ajax请求的HTTP头发送JWT.那么,只有ajax请求才能进行身份验证吗?
此外,我发现还有一个博客节目使用"授权标题"和"承载"来发送JWT.我不明白博客谈论的方法.有人可以解释一下"授权标题"和"持票人"的更多信息吗?这是否使所有请求的HTTP头传输JWT?如果是的话,CSRF怎么样?
有没有办法在没有webpack或browserify的情况下将.vue文件编译成.js文件?我知道webpack或browserify的优点,但我只想要最简单的方法来编译.vue文件.例如,我有一个单一的文件组件comp.vue
编译成comp.js
(编译器应该能够编译.vue文件SASS和哈巴狗),然后我可以用它在我的应用程序如下图所示:
<head>
<script src="vue.min.js"></script>
<script src="comp.js"></script> //it may pack the whole component into variable comp and add the style
<script>
Vue.component('comp', comp);
window.onload = function() {
new Vue({el: '#app'});
}
</script>
</head>
<body id='app'>
<comp></comp>
</body>
Run Code Online (Sandbox Code Playgroud)
或其他类似/更简单的方式?
我是 Vue.js 的新手。我发现在 html 模板之前加载 javascript 时绑定不起作用。
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.0/vue.min.js"></script>
<script type="text/javascript">
var demo = new Vue({
el: '#demo',
data: {
message: 'Hello Vue.js!'
},
methods: {
speak: function() {alert(this.message);}
}
})
</script>
</head>
<body>
<div id="demo">
<p>{{message}}</p>
<input v-model="message">
<button v-on:click.prevent='speak'>speak</button>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,当脚本放在 vue.js 脚本绑定到的 html 模板之后时,它会起作用。
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.0/vue.min.js"></script>
</head>
<body>
<div id="demo">
<p>{{message}}</p>
<input v-model="message">
<button v-on:click.prevent='speak'>speak</button>
</div>
</body>
<script type="text/javascript">
var demo = new Vue({
el: '#demo',
data: …
Run Code Online (Sandbox Code Playgroud)我使用setcookie制作一个expire = 0的cookie.从PHP文档,(链接)
Cookie过期的时间.这是一个Unix时间戳,因此是自纪元以来的秒数.换句话说,您最有可能使用time()函数加上希望它到期之前的秒数.或者你可以使用mktime().time()+ 60*60*24*30会将cookie设置为30天后到期.如果设置为0或省略,则cookie将在会话结束时(浏览器关闭时)到期.
我的PHP代码:
setcookie('option', 'yes', 0, '/');
Run Code Online (Sandbox Code Playgroud)
但是,当我关闭并重新打开浏览器(chrome但不是firefox)时,cookie仍然没有过期(仍然可以访问).
如何在浏览器关闭时使cookie过期?