相关疑难解决方法(0)

在外部JavaScript文件中插入动态值的安全方法

我正在使用以下策略实现内容安全策略标头

Content-Security-Policy: default-src 'self'

所以需要避免内联脚本,因为它不会执行.

但是,在MVC应用程序中,某些功能(如编辑器模板)使用内联脚本.例如tinymce_jquery_full.cshtml包含

$(function() { 

    $('#@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)').tinymce({
...
Run Code Online (Sandbox Code Playgroud)

.js使用CSP时,在外部文件中包含动态值的好方法是什么?

我目前的想法是两种方式之一:

C#生成的JavaScript

类似于JSONP的工作方式,除了在URL中我没有指定回调 - 我只是传递动态值.在每个需要动态JavaScript的文件中,我都包含一个链接,例如

<script src="/script/Foo/bar"></script>
Run Code Online (Sandbox Code Playgroud)

哪些匹配ScriptControllerFoo返回类型的内容的动作text/javascript将所述动态值bar.这对我来说是一种可靠的方式,如果有点笨拙,它首先会破坏使用CSP的一些优点(几乎很容易意外地插入未编码的文本并导致XSS,因为它没有CSP).

隐藏的表单字段

动态值将插入页面中:

<input type="hidden" id="url" name="url" value"http:://www.example.com/" />
Run Code Online (Sandbox Code Playgroud)

并在外部JavaScript文件中查找这些值:

$('#url').val();
Run Code Online (Sandbox Code Playgroud)

这将有效,但如果页面上有多个动态控件或者有多个相同类型的控件,则可能会很麻烦.问题是如何有效地将每个.js脚本与其隐藏字段匹配.

有没有更好的解决方案,还是有任何我可以使用的现成框架?

javascript c# security asp.net-mvc content-security-policy

10
推荐指数
1
解决办法
1350
查看次数