我们被要求实现Content-Security-Policy以减轻应用程序上的XSS攻击。因此,我们需要将所有内联脚本移动到引用文件中,然后可以在Content-Security-Policy HTTP头文件中指定为安全。
这在很大程度上是可行的,但现在似乎有些web控件(如webforms)注入内联脚本来执行回调。
是否有办法解决这个问题,或者我们需要使用第三方控件或可能创建自定义控件?
在ASP中开发web应用程序有两种技术。净:
-
ASP。. NET MVC将用户界面和代码(应用程序逻辑和表示逻辑)分离开来。它完全控制生成的HTML代码,生成纯HTML代码,所以你可以使用
'nonce-value'
来允许内联脚本"和内联样式<style>
。 -
ASP。. NET WebForms有一个与代码密切相关的用户界面逻辑,很难将其与代码分离,因此脚本和样式无法控制地嵌入到生成的HTML代码中。
当使用WebForms时,您可以使用'<hash-algorithm>-<base64-value>'
,但是哈希值将取决于部署环境。nces不直接适用,但您可以使用一个技巧-覆盖__doPostBack
或HtmlTextWriter
方法-请参阅这里的详细信息。