php避免网页出现运营商劫持,防止运营商劫持,前端解决办法
防止运营商劫持,前端解决办法
[toc]
常见的劫持方式:
按照劫持的方法不同,我将劫持分为下面两类:
跳转型劫持:用户输入地址A,但是跳转到地址B
注入型劫持:有别于跳转型型劫持,指通过在正常的网页中注入广告代码(js、iframe等),实现页面弹窗提醒或者底部广告等,又分为下面三个小类:
注入js类劫持:在正常页面注入劫持的js代码实现的劫持
iframe类劫持:将正常页面嵌入iframe或者页面增加iframe页面
篡改页面类劫持:正常页面出现多余的劫持网页标签,导致页面整体大小发生变化
解决办法:
针对注入js,添加资源过滤
/**
*
*
* 为css,js,div,添加H5自定义标签,data-res="trust",然后遍历dom,将不是自定义标签dom资源清除掉。
*/
//原生版
function clearAdv() {
var head = document.getElementsByTagName('head')[0];
var children = head.childNodes;
var res;
var source = 'trust'; //信任资源
for (var i in children) {
if (children.hasOwnProperty(i)) {
tagName = children[i].tagName;
if (tagName && tagName == 'SCRIPT') {
res = children[i].dataset['res'];
if (res != source) {
head.removeChild(children[i]);
}
}
}
}
var body = document.getElementsByTagName('body')[0];
if (body) {
children = body.childNodes;
for (var k in children) {
if (children.hasOwnProperty(k)) {
var tagName = children[k].tagName;
if (tagName) {
res = children[k].dataset['res'];
if (res != source) {
body.removeChild(children[k]);
}
}
}
}
}
}
//zepto版
function clearAdv() {
var $body = $('body');
var source = 'trust'; //信任资源
var $head = $('head');
var $headScript = $head.children('script');
$headScript.each(function () {
if ($(this).data('res') != source) {
$(this).remove();
}
});
var $bodyScript = $body.children('script');
$bodyScript.each(function () {
if ($(this).data('res') != source) {
$(this).remove();
}
});
var $div = $body.children();
$div.each(function () {
if ($(this).data('res') != source) {
$(this).remove();
}
});
}
针对加载资源,添加白名单控制
csp(Content Security Policy)内容安全策略,属于浏览器的的一种安全策略,以白名单作为信任机制,来限制网站是否可以包涵某网站来源。
把以下代码,放到页面head里。
content="default-src *; frame-src 'self' style-src 'self' http://*.trust.com https://*.trust.com 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://*.trust.com https://*.trust.com;">
针对iframe嵌套
把以下代码,放到页面head里。
(function (window) {
if (window.location !== window.top.location) {
window.top.location = window.location;
}
})(this);
判断当前的窗口有没有被嵌套在别的窗口中,如果window.top = window.self 没嵌套 ,当前窗口就是顶层窗口
php避免网页出现运营商劫持,防止运营商劫持,前端解决办法相关推荐
- 浏览器打开网页但找不到服务器ip地址 DNS错误 解决办法
文章目录 一. 问题: 二.解决办法: 一. 问题: 电脑连网了,浏览器打开网页找不到服务器ip地址,DNS错误. 二.解决办法: 打开设置–>点击"网络和Internet" ...
- 网页播放视频有声音无图像问题的临时解决办法
问题:网上查阅了很多资料,都没有解决我遇到的问题.我的临时解决办法 可以观看 瞬间黑屏一下然后正常播放后再启用(屏幕切换闪) 我的解决办法:(发现是独立显卡的问题,集成显卡又无法正常设置分辨率)计算机 ...
- 电脑打不开网页,能ping通,能上QQ,解决办法。
方法一 修改网络配置 因为网络配置不正确无法访问外网的情况. 解决办法: WIN+R ->在运行里面输入cmd 输入 ipconfig 查看网络配置是否正确 如果不正确,右击网络–>属性– ...
- 运放专题:运放电路振铃产生的原因及解决办法
写在前面 想必大家都学过运算放大电路,然而电路参数稍微处理不好便会导致你设计的运算电路效果大大折扣.振铃在运算放大电路中是经常出现的问题,因为参数的问题或者PCB板硬件本身的问题,往往导致你设计的放大 ...
- html网页模板中文乱码,Flash中出现中文乱码的解决办法
在编辑flash文件中加载了非 Unicode 编码的外部txt文本文件时,有些中文就不能正常显示. 解决办法: 用鼠标右键单击舞台上的元件,从弹出的快捷菜单中选择"动作"选项,打 ...
- 亚马逊后台网页提示HTTP Status 400 – Bad Request无法登陆的解决办法
在后台操作的时候,无意中点了一个什么库存限制的对话框叉叉,再打开的时候浏览器老是提示 HTTP Status 400 – Bad Request 以为是亚马逊网站或电脑网络问题,可是其他网站和亚马逊主 ...
- linux nginx配置文件不生效,nginx配置不生效 网页变为welcome to nginx 或welcome to centos 的解决办法...
本人的网站环境是centos + LNMP的,近期由于安装别的软件,导致网站主页变成welcome to centos,应该是nginx的配置文件被改变了或者加载了其他位置的配置文件,这应该是后装的软 ...
- QTP测试web:打开ie浏览器进行录制,点击网页没有反应,qtp中没有脚本生成的解决办法
首先打开的时候:只需加载web,不要附加别的 第一步:关闭ie的保护模式:设置--internet选项--安全--取消勾选"启用保护模式" 可以试试再次录制qtp是否有响应了,如果 ...
- 浏览器打开服务器上的图片无法显示,网页中的图片打不开怎么办?原因与解决办法...
最近有网友问小编这样一个很泛的问题:网页中的图片打不开怎么办?对于这个问题,其实导致的原因有很多,但也很好排除原因,主要从网络,网页,平台等当面综合去分析,就很容易可以找到答案.以下是小编对网页中的图 ...
最新文章
- java虚拟机内存分为,深入理解Java虚拟机笔记(一)----内存划分
- 只有2GB内存在20亿个整数中找到出现次数最多的数
- 中秋假期快乐!不发技术文章,有三AI知识星球半价三天
- 环美亚二十年装修师傅分享,甲醛的八种来源
- java面试换背景颜色_实习|渣二本Java菜鸡0 Offer的春招血泪史,一定要主动去找实习呀!
- hd-sdi转hdmi转换器产品规格参数及接口定义详解
- rc mysql common_RR与RC隔离级别下MySQL不同的加锁解锁方式
- javascript DOM对象转jquery对象
- python模拟登录淘宝参数在哪获取_如何用 Python 模拟登录淘宝?
- 【无向图求最小割集】
- Gitbub 基本使用
- 时间管理(3:SMART原则)
- 网络电台mms地址大全(二)
- html onload 写法,HTML onload用法及代码示例
- 我玩的王者荣耀(一)——鲁班
- python刷视频挣钱_薅羊毛--使用python+adb实现自动刷视频点赞
- 人工智能给我们带来新的创业机会,你愿意做局外人吗?
- 文件查找(c语言 findfirst函数,findnext函数)
- 微信小程序_Flex布局
- 30个CSS使用技巧