.NET MVC 5中严格CSP网格视图集成的使用

问题描述

由于严格的CSP合规性,我们需要替换我们的MVC5应用程序中使用的Kendo网格视图,我们正在寻找网格替代品,但很难找到严格的CSP合规性。任何人都可以帮忙并提出更换建议的网格。

解决方法

  1. 如果您想找到诸如Kendo UI之类的功能强大的程序,那是没有办法的,因为任何功能强大的库都将使用某些“ CSP-unsafe”构造。甚至Google跟踪代码管理器都要求“不安全内联”,在某些情况下还需要“不安全内嵌”。

  2. 某些“ CSP不安全”不是Kendo而是第三方JS库。例如,剑道使用的JSZip javascript库要求'unsafe-eval',但这是该lib的'麻烦',而不是剑道。任何其他GRid都将使用相同或相同的lib,并且没有人确保它们完全“ CSP安全”。 已更新:详细的研究表明Kendo UI 确实使用了不安全的评估表达式,但是JSZip.js却没有。

在嵌入Kendo网格时,您可能还会自己编写一些“ CSP不安全”代码。

  1. 很遗憾,您没有披露您需要的“严格的CSP遵从性”。这大大减少了使您的问题得到详细解答的机会。

Content security Policy for Kendo UI Grid可能需要“不安全”:

    style-src指令中的
  • 'unsafe-inline',这是不可避免的。

  • script-src指令中的
  • 'unsafe-inline',由于内联事件处理程序,这很难通过简单的方法避免。但是这些不会出现在每个浏览器中,并且其中的一些锁没有视觉影响(需要对代码进行额外的研究)。 已更新: Kendo UI本身不要使用不安全的-内联在脚本中。

  • script-src指令中
  • 'unsafe-eval',这是可以避免的-只需删除用户模板中的“导出到Excel”按钮即可。这是不可避免的,Kendo UI使用许多Function()构造,它们返回了'unsafe-eval'

但是任何其他具有强大UI(当然<table>...</table>和服务器端渲染除外)的Grid也会遇到相同的麻烦。 您仍然可以为Kendo UI拥有足够安全的CSP。 我还要写给JSZip开发人员(参考此线程),也许他们可以摆脱new Function构造。 (请参见上面的更新)。

将一个库更改为另一个库是在浪费大量时间,并且没有人保证将来该库将保持“严格的CSP遵从性”。

PS:我在重新设计Kendo UI后确实更新了一些细节。是我的错,对此感到抱歉。