【问题标题】: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 中获取它。但这是一项相当多的工作,所以我会推荐更简单的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多