我知道内联JS对性能有害,但为什么它对安全性有害?你能解释一下为什么吗?举几个例子?
答案 0 :(得分:1)
虽然它看起来像是重复的,但这里有一个很好的博客文章,其中有例子:
https://glebbahmutov.com/blog/disable-inline-javascript-for-security/
这是谷歌搜索;)
答案 1 :(得分:1)
限制性content security policy可以通过禁止除具有特定哈希值的脚本之外的所有脚本来帮助减少脚本注入漏洞的影响。
如果您使用on*
属性或javascript:
网址形式的内联JavaScript,则根本无法实施此类政策,因此肯定不太安全。
如果您使用<script>
s形式的内联JavaScript而不使用src
,则在CSP中创建哈希或随机数不太方便,这可能会诱使人们不要添加一个。 nonce策略还允许动态脚本,这通常是坏主意(仅仅是动态脚本的唯一用途 - 在<script>
中插入JSON,因为看起来与JavaScript兼容 - 是一个配方对于错误和脚本注入²)。
¹或位于您仅用于静态内容的特定域。小心允许提供可充当脚本的用户内容的域(包括来源!)!
由于没有转义<
,U + 2028和U + 2029而引起的² - JSON与内联JavaScript的3个不兼容性。我建议您使用典型的HTML转义并从data-
属性中读取。