防止csrf攻击之token

1.设置随机字符串,尽量大一些

var csrfToken=parseInt(Math.random()*999999,10);
		ctx.cookies.set('csrfToken',csrfToken)
		console.log(ctx.cookies.get('csrfToken'))

2.在表单中提交的数据中加入csrfToken

if(post){
			ctx.render('post', {post, comments, csrfToken});
		}else{
			ctx.status = 404;
		}

3.在页面的表单中加入token

实际应用中可以将input进行隐藏,然后进行表单提交给后端进行校验。

.input-field
input(name="csrfToken",value=csrfToken)

3.token验证,通过验证则可以发表评论

//token验证
		if(!data.csrfToken){
			throw new Error('csrfToken 为空')
		}
		if(data.csrfToken !== ctx.cookies.get('csrfToken')){
			throw new Error('csrfToken 错误')
		}

注意:如果是ajax请求可以将token放入meta中:

<meta name="csrf-param" content="_csrf">

然后在提交数据时,获取meta中的token,一起发送到后端,后端进行校验

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值