reCAPTCHA CSP style-src по-прежнему требует unsafe-inline, несмотря на одноразовый - PullRequest
0 голосов
/ 25 сентября 2018

В попытке избавиться от всего этого unsafe-inline я пытался поиграться с необходимыми заголовками CSP.В соответствии с собственной документацией Google ,

Мы рекомендуем использовать подход, основанный на nonce, документированный с 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 и эффективноне скрывает textarea, содержащий ответ reCAPTCHA.

Это, кажется, лишает цели добавления одноразового номера.

Там также есть аналогичные разговоры слева и справа примерно так жетак что либо это ошибка, либо я чего-то не вижу.

Если кто-то справится с этим и / или у него появятся какие-нибудь другие яркие идеи, я действительно буду признателен за это!

...