如何在遵守严格的 script-src 内容安全策略的同时让 KendoUI 正常工作

Posted

技术标签:

【中文标题】如何在遵守严格的 script-src 内容安全策略的同时让 KendoUI 正常工作【英文标题】:How can I get KendoUI to function while adhering to strict Content Security Policy for script-src 【发布时间】:2015-10-20 06:12:48 【问题描述】:

我有一个大型 Web 应用程序,在尝试实施内容安全策略时遇到了问题。为了复制,我创建了一个非常基本的页面,如下所述。 KendoUI 失败了。我已将其缩小为 CSP 问题,特别是 KendoUI 在启用 'unsafe-eval' 时运行良好,但在不允许时运行良好,当然这是一个严重的问题,所以我想知道我是否使用了错误的构建或错过了什么?

粗略演示问题(通过元标记插入标题值):

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Security-Policy" content="script-src 'self' https://cdn.kendostatic.com https://code.jquery.com;">
    <script src="https://code.jquery.com/jquery-1.11.3.min.js" type="text/javascript" ></script>
    <script src="https://cdn.kendostatic.com/2015.3.930/js/kendo.web.min.js" type="text/javascript" ></script>
</head>
<body>
    <h1>See CSP Error in console</h1>
</body>

我使用此标头收到 CSP 错误:

Content-Security-Policy: script-src 'self' https://cdn.kendostatic.com https://code.jquery.com;

只要我将“unsafe-eval”添加到 script-src 选项,错误就会消失,但这似乎是不可接受的,并且可能是一个常见问题,因为 kendoui 是一个如此广泛使用的框架。

【问题讨论】:

【参考方案1】:

通过与 Telerik 的进一步对话,我得到了以下回复:

Kendo UI 在内部使用 eval() 调用。这就是 Kendo UI 模板在内部工作的方式。目前我们没有解决方法,但我们正在探索渲染 Kendo UI 小部件的新方法,这也将符合此政策。

【讨论】:

以上是关于如何在遵守严格的 script-src 内容安全策略的同时让 KendoUI 正常工作的主要内容,如果未能解决你的问题,请参考以下文章

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”

如何安全地将 script-src 与已知的 JSONP 端点主机(如 syndication.twimg.com)结合起来?

内容安全策略指令:“script-src 'self' blob: filesystem: chrome-extension-resource:” 获取时是不是

内容安全策略指令:“script-src'self'blob:filesystem:chrome-extension-resource:”在获取是否

带有内容安全策略的recaptcha中的Webview iOS问题

内容安全策略间歇性错误