在 http 网页中使用 CSP 能帮助防止 http 劫持吗?

2017-04-20 01:15:02 +08:00
 momocraft

有一个论坛不时被人注入外站脚本. 站本身内容不像有问题, 所以猜测是运营商的 http 劫持.

我感觉在页面中用 CSP 限制脚本资源的域有可能改善 http 劫持, 有人做过类似的事吗?

(这个论坛有大量 http 资源外链, 暂不能切 https)

4027 次点击
所在节点    信息安全
16 条回复
Quaintjade
2017-04-20 01:31:16 +08:00
可以防简单粗暴的加塞脚本劫持。
但理论上仍能劫持,比如把你 http 头的 csp 也篡改了。
virusdefender
2017-04-20 01:39:32 +08:00
还不错的,当然运营商是通用劫持,可能不会用上面的方法来单独针对你。
caola
2017-04-20 02:17:45 +08:00
有可能会把全部的 CSP 响应头或标签干掉就完事了,但至少目前还没有发现这样的行为。

不过建议你还是尽快切换为 https ,引用的 http 外链建议全部本地化。
yyfearth
2017-04-20 05:57:58 +08:00
可以暂时改善 但是 ISP 可以轻松的通过把你的 CSP 头去掉或者改掉 然后接着劫持
yyfearth
2017-04-20 05:59:09 +08:00
另外 ISP 还可以劫持 JS 脚本来做到同样的事情 CSP 就无能为力了
nfroot
2017-04-20 08:59:48 +08:00
@Quaintjade js 写入 meta 劫持不了吧(可以在代码上稍微改变一下 meta 标签的特征)
03
2017-04-20 09:36:54 +08:00
外链的一般是图片吧,那应该可以试试把自己控制的都用 https ,虽然有警告但加载 http 图片一般是可以的
qcloud
2017-04-20 09:50:41 +08:00
不能,配合 https 才有效
Quaintjade
2017-04-20 09:56:22 +08:00
@nfroot
既然是明文传输,理论上可以把你用来写入 meta 的那个 js 劫持或者篡改掉。
当然这只是理论上的,实际上运营商不会费这么大力气来单独劫持你的网站。
est
2017-04-20 09:59:37 +08:00
运营商劫持的原理是把 xxxx.js 改成 他们的广告 js 然后最后加一句 document.write("xxxx.js?v=123123")

其中 v=123123 就是劫持白名单

最好的办法是页面中的 js 的 URL 不以 js 结尾。

然后页面要这样写:

<html>
<!-<head>
</head>-->
<head>
...
</head>
<!-<head></head><body>-->
<body>
</body>
</html>

这样一些自作聪明插入 js 的劫持也会插入到注释里去
shiji
2017-04-20 10:07:22 +08:00
另外你可以在某些页面插入自己的一段 js 脚本,随机把当前整个 html 里面的内容 post 回你的服务器,看看有没有遭到篡改。 一些浏览器插件也会修改,反正自己人工比较吧。
nfroot
2017-04-20 10:58:57 +08:00
@est 于是自作聪明的劫持在代码开头写了一个<!-- 完美消除楼上带来的影响 --->,类似的还有 noscript 标签, noframes 标签哈哈哈哈
est
2017-04-20 11:32:26 +08:00
@nfroot 你写一个试试?我看看如何完美的。
tinkerer
2017-04-20 21:58:35 +08:00
@nfroot 我也想看您是怎么完美的。
dong3580
2017-06-07 09:19:44 +08:00
@est
不太明白,为什么这样写会
est
2017-06-07 09:27:55 +08:00
@dong3580 你看我 blog 源码就是这样处理过的 http://blog.est.im/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356039

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX