首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >内容安全策略阻止代码进入我的JQuery脚本

内容安全策略阻止代码进入我的JQuery脚本
EN

Stack Overflow用户
提问于 2019-03-18 14:34:26
回答 1查看 2.8K关注 0票数 1

代码语言:javascript
复制
<script src="/xx/xxxxxx/jquery-x.x.x.js" type="text/javascript" charset="utf-8" nonce="<%=nonce%>"></script>
<script src="/xx/xxxxxx/xxxxxx.js" type="text/javascript" charset="utf-8" nonce="<%=nonce%>"></script>

Chrome的结果:

当我尝试单击错误时,我在jQuery文件中看到两个错误(请注意,下面的两个错误不是我的代码,而是来自jquery.x.js)

现在,在不使用此CSP的情况下,我应该如何解决这两个问题?

不安全-内联

很多人都说上面的和不安全的-eval是不推荐这样使用的:https://barryvanveen.nl/blog/47-how-to-prevent-the-use-of-unsafe-inline-in-csp

EN

回答 1

Stack Overflow用户

发布于 2019-03-18 18:42:05

对于第一个错误:

在运行时插入的divinnerHTML包含一个具有style属性的<a>元素。这是您的CSP的violation,因为这个特定的标记没有nonce。

解决方案

对这个标记使用nonce是不明智的,因为它是在运行时插入的,并且nonce应该被添加到HTML服务器端。

我建议将CSS移到另一个文件中,并使用链接标签包含该文件

HTML:

代码语言:javascript
复制
<!-- Other html -->

<link href="./style.css" rel="stylesheet">

style.css

代码语言:javascript
复制
a#someId {
  color: red;
  float: left;
  opacity: .55;
}

请注意,您的JS需要进行一些修改,因为创建的<a>标记需要有一个CSS选择的id属性

script.js

代码语言:javascript
复制
div.style.display = "none";
div.innerHTML = "   <link/><table></table><a href='/a' id='someID' >a</a><input type='checkbox'/>"

对于第二个错误:

如果不知道脚本的内容,就不可能确定是什么导致了错误。请发布几行与创建脚本变量相关的代码。

然而,这可能是第一个类似的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55215756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档