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

 mobiledu2502897737 发布于 2023-01-30 16:48

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

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

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

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

$(function() { 

    $('#@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)').tinymce({
...

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

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

C#生成的JavaScript

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


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

隐藏的表单字段

动态值将插入页面中:


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

$('#url').val();

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

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

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有