Html-атрибут не заполняется из HttpContext.Items - PullRequest
0 голосов
/ 25 сентября 2018

Моя проблема кажется довольно простой, и я чувствую, что упускаю что-то чрезвычайно очевидное;но я не могу определить, почему атрибут Nonce в элементах сценария не заполняется, а оставшиеся пустые строки вместо этого.

Я решил использовать коллекцию Items внутри HttpContext для хранения одноразового номера, потому что из того, что яможно сказать, что это по запросу.

Startup.Configure (приложение IApplicationBuilder, enH IHostingEnvironment)

...
app.Use(async (context, next) => { //CSP
    RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
    byte[] nonceBytes = new byte[32];
    rng.GetBytes(nonceBytes);
    string nonce = Convert.ToBase64String(nonceBytes);
    context.Items.Add("ScriptNonce", nonce);
    context.Response.Headers.Add("Content-Security-Policy", string.Format(
        "default-src 'none'; " +
        "script-src 'self' 'unsafe-eval' 'nonce-{0}'; " +
        "style-src 'self'; " +
        "img-src 'self' data: https:; " +
        "base-uri 'self'; " +
        "upgrade-insecure-requests; " +
        "object-src 'none'; ", nonce));
    await next();
});
...

Просмотр

...
@section Scripts {
    <script src="~/lib/jquery-ajax-unobtrusive/jquery.unobtrusive-ajax.min.js" nonce="@Context.Items["ScriptNonce"]"></script>
    <script src="~/js/Views/Admin/users_index.min.js" nonce="@Context.Items["ScriptNonce"]"></script>
}

Результат: Одноразовый номергенерируется, существует в HttpContext.Items, не заполняется.

Это кажется очень простым, и я действительно запутался, почему атрибуты не заполняются.Я немного новичок в веб-разработке, поэтому любые советы в ASP.Net Core 2 были бы очень признательны, если что-то вам понравилось.

Ответ: Первый комментарий ; Одноразовый номер был там все время, его скрывал Хром.

1 Ответ

0 голосов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...