尽管随机数

时间:2018-09-25 06:52:36

标签: recaptcha content-security-policy asp.net-core-2.1 nwebsec

为了摆脱整个unsafe-inline,我一直在尝试弄乱必要的CSP标头。根据Google的own documentation

  

我们建议使用CSP3中记录的基于随机数的方法。使   确保在reCAPTCHA api.js脚本标记中包含您的现时,并且   我们会处理剩下的。

接下来,您可以或者添加style-src 'unsafe-inline'(我宁可不要)。

但是据我所知,这要比他们说出的要复杂得多。 我已经从添加使用CSP标头切换为使用

app.Use(async (context, next) =>
{
    context.Response.Headers.Add("Content-Security-Policy",
        "script-src 'self' 'unsafe-inline' https://www.google.com https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/; " +
        "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; " +
        "img-src 'self'"
        );

    await next();
});

实施NWebsec软件包并进行

app.UseCsp(options => options
.ScriptSources(s => s.Self().CustomSources(
    "https://www.google.com",
    "https://www.google.com/recaptcha/",
    "https://www.gstatic.com/recaptcha/"))
.StyleSources(s => s.Self().UnsafeInline())
.ImageSources(s => s.Self()));

添加时

@addTagHelper *, NWebsec.AspNetCore.Mvc.TagHelpers

_ViewImports.cshtml,然后相应地添加nws-csp-add-nonce="true"标签属性。

<script nws-csp-add-nonce="true" src="https://www.google.com/recaptcha/api.js"></script>

这可以解决随机数问题,但是如果不添加unsafe-inline,产生一堆style-src违规错误以及有效地不隐藏包含reCAPTCHA响应的textarea,它仍然无法正常工作。

这似乎违反了添加随机数的目的。

关于同一件事,也有类似的话题left,所以这是一个错误或者我什么都没看到。

如果有人解决了这个问题和/或有其他聪明的主意,我将不胜感激!

0 个答案:

没有答案