小编Tim*_*ce7的帖子

在浏览器中存储JWT的位置?如何防范CSRF?

我知道基于cookie的身份验证.可以应用SSL和HttpOnly标志来保护来自MITM和XSS的基于cookie的身份验证.但是,需要采取更多特殊措施以保护其免受CSRF的影响.它们有点复杂.(参考)

最近,我发现JSON Web Token(JWT)作为身份验证的解决方案非常热门.我知道有关编码,解码和验证JWT的内容.但是,我不明白为什么有些网站/教程在使用JWT时不需要CSRF保护.我已经阅读了很多,并试图总结下面的问题.我只是希望有人可以提供JWT的全貌并澄清我对JWT误解的概念.

  1. 如果JWT存储在cookie中,我认为它与基于cookie的身份验证相同,除了服务器不需要有会话来验证cookie /令牌.如果没有实施特殊措施,CSRF仍存在风险.JWT不是存储在cookie中吗?

  2. 如果JWT存储在localStorage/sessionStorage中,那么没有cookie所以不需要防止CRSF.问题是如何将JWT发送到服务器.我发现这里建议使用jQuery通过ajax请求的HTTP头发送JWT.那么,只有ajax请求才能进行身份验证吗?

  3. 此外,我发现还有一个博客节目使用"授权标题"和"承载"来发送JWT.我不明白博客谈论的方法.有人可以解释一下"授权标题"和"持票人"的更多信息吗?这是否使所有请求的HTTP头传输JWT?如果是的话,CSRF怎么样?

security authentication cookies csrf jwt

142
推荐指数
6
解决办法
5万
查看次数

将.vue文件编译为.js文件,不带webpack或browserify

有没有办法在没有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)

或其他类似/更简单的方式?

javascript vue.js vue-component vuejs2

12
推荐指数
2
解决办法
4725
查看次数

在 html 之前加载脚本时,Vue.js 不起作用

我是 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)

vue.js vue-component vuejs2

4
推荐指数
1
解决办法
1968
查看次数

浏览器关闭后,setcookie with expire = 0不会过期

我使用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过期?

php cookies google-chrome

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