我的脚本由一些移动运营商内联 - 如何处理?

时间:2015-02-19 17:41:19

标签: javascript web content-security-policy

有些网页在手机上没有正确接收(法国有很多网页):内嵌了JavaScript脚本元素。

而不是

 <script src="static/jquery-2.1.3.min.js"></script>

我有

 <script> ... content of the whole jQuery script ... </script>

由于我设置的内容安全策略标题禁止内联脚本,现代浏览器会阻止脚本的执行。

除了使用HTTPS之外,有没有其他方法可以解决这个问题?也许某些指定页面的方法不应该被第三方重写?

注意:

  • CSP标题不足以提示进行转换的第三方
  • Cache-Control:no-transform标题也会被忽略
  • 任何涉及添加内联脚本的答案都不是答案,因为目标是删除所有内联脚本以确保安全性
  • 问题相关注入补充脚本(在浏览器被指示不执行它们时不会破坏我的网站),而是内联现有脚本
  • 问题并非针对任何运营商:我正在寻找一个(合理的)通用解决方案

2 个答案:

答案 0 :(得分:6)

不是最优雅的解决方案,但您总是可以尝试通过更改文件扩展名来欺骗ISP认为它不是js资源(这可能会导致您发送的标头中mime类型的更改)。 / p>

将文件投放为jquery.java或其他扩展程序。同样,不是最优雅的解决方案,但正如tadman在评论中所说,有时候处理混蛋并不容易。

答案 1 :(得分:0)

您要求提供避免HTTPS的解决方案,但这就是您应该做的事情。对所有内容使用HTTPS,并停止让这些“有用”的MITM破坏它。

给自己free TLS certificate(从2015年9月开始)。

目前公认的解决方案是玩猫捉老鼠游戏。如果你关心安全性(你必须服务于CSP标题),你需要阻止这种攻击,而不是试图隐藏它。