如何在不违反CSP的情况下绑定剃刀视图中的onchange等事件

问题描述 投票:0回答:1

为了提高安全性,我在中间件中添加了此响应标头。content-security-policy: default-src 'self'

并且在剃刀局部视图中,我有一个带有onchange="this.form.submit()的SELECT元素>

<div class="dropdown-item text-dark">
    <form id="selectLanguage" method="post" class="form-horizontal" role="form"
            asp-controller="Home"
            asp-action="PersistLanguage" 
            asp-route-returnUrl="@returnUrl">
        <select name="culture" onchange="this.form.submit()"
                asp-for="@requestCulture.RequestCulture.UICulture.Name" asp-items="cultureItems">
        </select>
    </form>
</div>

因此,浏览器报告以下内容。

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“ default-src'self'data:“。要么是'unsafe-inline'关键字,一个哈希('sha256 -...'),要么是要启用内联执行,需要一个随机数(“ nonce -...”)。注意也没有明确设置'script-src',所以'default-src'是用作备用。

((未知)ListPicker._handleMouseUp

放松策略可以解决,但不建议这样做:script-src 'self' 'unsafe-inline'

在不违反CSP内联脚本约束的情况下,在剃刀局部视图中绑定事件(如onchange)的正确方法是什么?

为了提高安全性,我已将此响应标头添加到middleware.content-security-policy:default-src'self'中。在剃刀局部视图中,我有一个SELECT元素,其onchange =“ this ....

security asp.net-core razor content-security-policy
1个回答
0
投票

您可以在脚本文件中编写类似这样的代码。

© www.soinside.com 2019 - 2024. All rights reserved.