Javascript 在DOM中存储CSRF令牌值是否安全?

Javascript 在DOM中存储CSRF令牌值是否安全?,javascript,asp.net,dom,csrf,websecurity,Javascript,Asp.net,Dom,Csrf,Websecurity,我正在通过对API请求的每次调用验证CSRF令牌(请求只向我发送一封电子邮件)。 我有两种方法来调用AJAX API,一种在JS中,另一种在C#中(JS是主要的,如果用户禁用了JS,C#只是一个备份)。我的C#方法使用以下代码从头中检索CSRF令牌。(到目前为止,这种C#方法非常有效) 这个来自OWASP(^)的关于CSRF的备忘单说,使用JS检索CSRF令牌的一个选项是使用JS将值存储在DOM中 然后您可以使用JQuery检索它,代码如下 var csrf_token=$('meta[na

我正在通过对API请求的每次调用验证CSRF令牌(请求只向我发送一封电子邮件)。 我有两种方法来调用AJAX API,一种在JS中,另一种在C#中(JS是主要的,如果用户禁用了JS,C#只是一个备份)。我的C#方法使用以下代码从头中检索CSRF令牌。(到目前为止,这种C#方法非常有效)

这个来自OWASP(^)的关于CSRF的备忘单说,使用JS检索CSRF令牌的一个选项是使用JS将值存储在DOM中

然后您可以使用JQuery检索它,代码如下

var csrf_token=$('meta[name=“csrf token”]”)attr('content')

我没有受过专业培训,但这似乎是一个巨大的安全风险。 在XSS攻击的情况下,攻击者可以轻松地窃取令牌,对吗

比如说,cookies上的HttpOnly头不就是为了阻止这样的事情吗

//this is ASP.NET MVC 4.7 by the way 

public string TokenHeaderValue()
{
    string cookieToken, formToken;
    AntiForgery.GetTokens(null, out cookieToken, out formToken);
    return cookieToken + ":" + formToken;
}