【问题标题】:Move 2sxc <script> to external file when it has razor content将 2sxc <script> 移动到具有剃须刀内容的外部文件
【发布时间】:2020-10-07 10:03:41
【问题描述】:
我正在尝试使我的 CSP 没有不安全的内联。
由于我必须手动检查每个应用程序的每个文件,我不妨将脚本移动到外部文件,而不是通过添加散列或通知在 web.config 中创建一百万字的 CSP 条目。
这对于客户端内容来说似乎很容易,但许多模板都有剃须刀代码,例如:
<script>
alert(@myVar);
</script>
如何将其移至外部?
【问题讨论】:
标签:
razor
dotnetnuke
2sxc
【解决方案1】:
所以一般来说,如果你的 JS 需要一些输入参数,你当然必须把它们放在某个地方,只有剃须刀才会知道它们是什么。
最简单的方法仍然是让初始调用使用变量 - 就像上面的示例一样。如果您有安全问题,在 razor 中进行类型检查应该可以为您消除这种情况。
例如,如果您执行@((int)thing.property),则它根本无法注入任何意外有效负载。
如果出于某种原因你真的,真的不想要这个,你可以使用属性-json约定,比如
<div class="myGallery" init='{"files": 17}'> gallery contents </div>
并从您创建的 js 中获取它。但这是一项相当多的工作,所以我会推荐更简单的方法。