将 csrf 令牌存储在元标记中是一种好习惯吗?

Posted

技术标签:

【中文标题】将 csrf 令牌存储在元标记中是一种好习惯吗?【英文标题】:Is it a good practice to store the csrf token in meta tag? 【发布时间】:2015-06-23 04:41:34 【问题描述】:

如果我在不使用表单的情况下发出 POST 请求,并且想要防止 CSRF 攻击,我可以做的是在 meta 标签中设置 csrf-token,并在触发请求时将其放回 header。这是一个好习惯吗?

<meta name="csrf-token" content="xxx">

通过标头放回令牌,例如使用 JQuery:

$.ajaxSetup(
   headers: 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
   
);

【问题讨论】:

【参考方案1】:

是的,如果您使用 AJAX,这是一个很好的做法。您也可以将令牌放在表单中(如果提交整个表单会更方便),但如果您使用的是 AJAX,则只需要去某个地方抓取即可。

在隐藏字段或元标记内都是很好的选择。

【讨论】:

以上是关于将 csrf 令牌存储在元标记中是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章

将函数放在 useEffect 中是一种好习惯吗?

将函数放入 javascript 对象中是一种好习惯吗? [复制]

将 UICollectionView 和 UITableView 放在 iOS 的 UIScrollView 中是一种好习惯吗?

将嵌入式码头和 GRPC 服务器运行在同一个 JVM 中是一种好习惯吗?

将所有环境(dev uat prod)的 jar 和配置打包在一个 zip 中是一种好习惯吗?

使用表单属性并将输入元素放在 HTML 中的表单标记之外是一种好习惯吗?