相关疑难解决方法(0)

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

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

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

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

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

$(function() { 

    $('#@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)').tinymce({
...
Run Code Online (Sandbox Code Playgroud)

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

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

C#生成的JavaScript

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

<script src="/script/Foo/bar"></script>
Run Code Online (Sandbox Code Playgroud)

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

隐藏的表单字段

动态值将插入页面中:

<input type="hidden" id="url" name="url" value"http:://www.example.com/" />
Run Code Online (Sandbox Code Playgroud)

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

$('#url').val();
Run Code Online (Sandbox Code Playgroud)

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

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

javascript c# security asp.net-mvc content-security-policy

10
推荐指数
1
解决办法
1350
查看次数

如何让外部代码"安全"运行?只是禁止eval()?

我希望能够允许社区成员提供他们自己的javascript代码供其他人使用,因为用户的想象力远远超过我能想到的任何东西.

但这提出了安全性的固有问题,特别是当目的是允许外部代码运行时.

那么,我可以禁止eval()提交并完成它吗?或者还有其他方法来评估代码或导致javascript中的大规模恐慌?

还有其他事情要禁止,但我主要担心的是,除非我能阻止执行字符串,否则我可以规避任何其他过滤器以用于特定方法.可行,或者我是否必须诉诸要求作者提供Web服务界面?

javascript security xss

6
推荐指数
3
解决办法
2322
查看次数

同时沙盒并将 JS/HTML 添加到 iFrame

我正在尝试创建一个内部有 JS 火的 iframe,但无法访问父文档。目标是有一个简单的实现并且不包含任何特殊的库。我发现HTML5 Sandbox属性是一个可行的解决方案;然而,事实证明,同时沙箱 iframe并将JS 放入其中是相当困难的。

我努力了:

  1. 将 JS 添加到 iframe,然后将其从父文档中沙箱化。这不起作用,因为 iframe 中的 JS 在应用 iframe 沙箱之前触发
  2. 创建 iframe 并使用srcdoc属性设置 HTML(例如<iframe sandbox="allow-scripts" srcdoc="<body><script src='sample1.js'></script><script src='sample2.js'></script></body>"></iframe>),根据此处,这在 IE 中不起作用
  3. 创建 iframe 并使用src属性设置 HTML(例如<iframe sandbox="allow-scripts" src="javascript:&quot;<html><body><script src='sample1.js'></script><script src='sample2.js'></script></body></html>&quot;"></iframe这在 Firefox 38.0.5 (Mac OS X Yosemite) 中不起作用,但在 Chrome 43 和 Safari 8.0.4 中起作用......“在 Firefox 中不起作用”意味着它确实会允许sample2.js添加<span></span>到iframe DOM,但它不设置span的innerText;因此,它不能按预期工作。
  4. 最后,我刚刚尝试通过JS动态创建一个iframe。将 iframe 添加到 DOM(没有沙箱属性)后,我向其中写入 HTML,其中包含我想要在 iframe 中沙箱化的脚本。在 iframe 头部,我有一个沙箱脚本。 …

html javascript security iframe sandbox

5
推荐指数
1
解决办法
3746
查看次数

在&lt;iframe /&gt;上使用sandbox =“ allow-scripts allow-popups allow-same-origin”是否安全?

我在应用程序中动态创建一个iframe,结果如下所示:

<iframe src="blob:http%3A//localhost%3A9292/0194dfed-6255-4029-a767-c60156f3d359" 
        scrolling="no" sandbox="allow-scripts allow-popups allow-same-origin" 
        name="sandbox" style="width: 100%; height: 100%; border: 0px;"></iframe>
Run Code Online (Sandbox Code Playgroud)

具有这样的沙盒配置是否安全(特别是允许将iframe内容视为来自同一来源)?

html javascript security iframe same-origin-policy

3
推荐指数
3
解决办法
8096
查看次数