我知道内联 JS 不利于性能,但为什么它不利于安全呢?你能向我解释一下为什么吗?有一些例子吗?
最佳答案
限制性content security policy通过禁止除具有特定哈希值的脚本之外的所有脚本,可以帮助减少脚本注入(inject)漏洞的影响。
如果您使用
on*
形式的内联 JavaScript属性或javascript:
URL,你根本无法实现这种类型的策略,所以这肯定不太安全。如果您使用
<script>
形式的内联 JavaScript没有src
,创建用于 CSP 的哈希值或随机数不太方便,这可能会诱使人们根本不添加哈希值或随机数。随机数策略还允许使用动态脚本,这通常是个坏主意(动态脚本的唯一用途是在<script>
中插入 JSON,因为它看起来与 JavaScript 兼容 - 会导致错误和脚本注入(inject)²)。
¹ 或位于仅用于静态内容的特定域。小心允许域(包括源!)提供可以充当脚本的用户内容!
² 未转义引起的 <
、U+2028 和 U+2029 – JSON 与内联 JavaScript 的 3 个不兼容性。我建议使用典型的 HTML 转义并读取 data-
属性代替。
关于javascript - 为什么内联 JavaScript 安全性不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48672542/