LMLPHP后院

如何防止ISP网络运营商篡改网页技术

maybe yes 发表于 2016-05-23 14:55

如何防止运营商修改网页,如何防止网页页面被植入广告,如何检测网页源码到达用户后被篡改?这个问题是个比较头疼的问题,也是让无数站长寻医问药很多年仍然不能很好的解决的一个问题。我这里先给出一个答案,如果一定要根治的话,那就是全站 HTTPS

全站 HTTPS 是很难做到的,包括百度在内,百度仍有部分时候不是 HTTPS。据说使用了 HTTPS,某些运营商依然会更改,不过这样网页就会发生错误。

很多时候我们只是想检测或者知道网页到达用户以后是不是被篡改,从而提示用户转到 HTTPS 页面。针对这个问题,是非常难解决的,据说百度之前给站长支招,放入一段 Js 代码,遍历 DOM 节点,如果发现 DOM 中有 SCRIPT 标签中的 SRC 不是本站已知的域名则移除。其实这样做不是完全有用的,因为很多动态加载的 JS 代码会自动移除 DOM 节点。并不会留下任何踪迹。很多人肯定会想到通过源文件或者 HTTP 协议头来校验,其实 JavaScript 是没有办法获取网页源文件的,所以通过源来校验的路走不通。通过 HTTP 协议头呢,也依然是没有用,JavaScript 不能获取页面首次请求的头信息,除非再发出 Ajax 请求。

现代的新型浏览器提供了 performance 对象,通过该对象可以获取每个资源的加载情况,从而达到可以检测是否加载了外部非法资源的能力。通过 window.performance.getEntriesByType 来获取 Entity 遍历每个实体的性能,检测是否加载了外部非法 JavaScript,进一步处理通知用户跳转到 HTTPS 页面。目前为止,发现唯一可行的方法就是这个啦。

2019-10-20 11:29:09 1571542149 0.096610