如果我在不使用表单的情况下发出POST请求并希望阻止CSRF攻击,我可以做的是在元标记中设置csrf-token,并在触发请求时将其放回标题。这是一个好习惯吗?
<meta name="csrf-token" content="xxx">
使用JQuery将标记放回标题,例如:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
答案 0 :(得分:6)
是的,这是一种很好的做法。如果您使用的是ajax,我认为这是最干净的解决方案。
您也可以将令牌放在表单中(如果提交整个表单会更方便),但如果您使用的是ajax,则只需要去某个可以抓取它的地方。
在隐藏字段或元标记中都是非常好的选择。