热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

弹出窗口拦截攻防

1.Pop-upBlockerWindowsXPSP2在InternetExplorer中增加了Pop-upBlocker(弹出窗口阻止程序),它可以阻止或屏蔽大部分的弹出窗口。对

1.Pop-up Blocker

Windows XP SP2在Internet Explorer中增加了Pop-up Blocker(弹出窗口阻止程序),它可以阻止或屏蔽大部分的弹出窗口。对于由最终用户点击链接打开的窗口不会被影响,另外来自本地网和信任站点域的弹出窗口也不会被阻止。

Pop-up Blocker默认为开启状态,这样可以阻止自动打开和在后台打开的弹出窗口,但是用户点击链接打开的窗口仍然可以正常显示。

启用 Pop-up Blocker
可以使用三种不同的方法启用 Pop-up Blocker。
? 第一次出现时的提示
在第一个弹出窗口出现之前出现提示,询问用户是否启用 Pop-up Blocker。
? “工具” 菜单
在 Internet Explorer 中,在 工具 菜单上,点击 屏蔽弹出窗口, 然后点击 阻止弹出窗口.
? Internet 选项.
在 Internet Explorer 的 工具 菜单上,点击 Internet 选项,点击隐私选项卡,然后点击 屏蔽弹出窗口。然后点击选项,对 Pop-up Blocker 加以设置。
 
当一个弹出窗口被屏蔽时:
当一个站点的弹出窗口被屏蔽时,会在状态栏上显示一个通知和播放一个声音,而且将在显示区域上边地址栏下边显示信息栏(您可以不播放声音和显示信息栏,参见后面的高级设置选项)。点击状态栏上的通知,可以看到一个带有如下选项的菜单:
? 显示被阻止的弹出窗口。重新加载弹出窗口。
? 允许来自该站点的弹出窗口。将当前站点添加到 “允许” 列表。
? 阻止弹出窗口。开启或关闭 Pop-up Blocker。
? 弹出窗口选项。打开 “ 弹出窗口管理” 窗口。
 
信息栏则会显示弹出窗口被屏蔽消息并通知用户可以通过点击信息栏允许弹出窗口和其他设置:
? 显示被阻止的弹出窗口。重新加载弹出窗口。
? 允许来自该站点的弹出窗口。将当前站点添加到 “允许” 列表。
? 设置是否阻止弹出窗口和显示信息栏以及更多高级设置。
? 信息栏帮助。

高级设置选项
信任站点列表
最终用户和IT管理员能够通过将一些网站加入信任站点列表从而允许这些网站的自动弹出窗口。

过滤级别设置和其他选项
三种过滤级别:
 高级:阻止所有的弹出窗口(可以通过按住ALT键点击链接打开窗口)
 中级:阻止大部分自动弹出窗口(默认级别)
 低级:允许安全站点的弹出窗口
其他选项:
 当一个弹出窗口被屏蔽时是否播放一段声音
 当一个弹出窗口被屏蔽时是否显示信息栏

*以下内容除非特别标注,否则都是在Pop-up Blocker的默认设置下。

阻止机理
Pop-up Blocker会屏蔽除了除createPopup()(IE5.5及以上版本支持,参见附录)之外的从脚本自动打开的任何窗口。受此影响的一些常用函数是:window.open(), showModelessDialog(), showModalDialog(), showHelp(), window.external.NavigateAndFind()。

 

2.检查方法
在已有的资料中,微软还没有提供可以检测用户是否打开了IE Blocker的功能,只是提供了如何检查窗口是否被阻止的方法。

对于window.open()打开的窗口,当窗口被阻止,那么函数将返回空值。当弹出被阻止时,在使用 window.open() 的返回值来避免脚本错误之前,请始终对该值进行检查。


 
 
  
 
 
 


 

这个例子显示如何检查函数返回值来判断用window.open()方法打开的弹出窗口是否被阻止。

对于使用showModelessDialog(), showModalDialog(), showHelp()自动打开的窗口,可以通过以下两种方式来处理弹出窗口被阻止的情况:
1 如果浏览器版本是IE 5.0及以上,那么就可以在Javascript代码中使用try/catch结构来处理。如下列代码所示:


 
 
 
 
 
  


 
 
 
 

在此例中,当页面初始化时通过openWin()函数自动打开的窗口将被阻止,并显示错误信息和错误代号。

2 让打开窗口的函数设置Javascript错误句柄。如下所示:


 
 
 
 
 


 
 
 

这个示例证明了通过设置错误句柄来捕获窗口被阻止时的异常信息。和以上方法一样,可以通过这种方式来通知用户禁用Pop-up Blocker或将站点加入可信站点域来查看弹出内容。

 

如何检测浏览站点的浏览器是否是SP2 中的 Internet Explorer
可以使用 window.navigator.userAgent 来检测。
var g_fIsSP2 = false;
function browserVersion()
{
   g_fIsSP2 = (window.navigator.userAgent.indexOf(“SV1”) != -1);
   if (g_fIsSP2)
   {
   //This browser is Internet Explorer in SP2.
   }
   else
   {
   //This browser is not Internet Explorer in SP2.
   }
}

如果用户代理字符串中包含“SV1”,说明连接到您站点的浏览器是 SP2 中的 Internet Explorer。

 

 

 

 

 

3.绕过拦截方法一

弹出窗口的网页插入的代码:

  Open.htm代码:

 

 

4.绕过拦截方法二

 ForceWindow.iclass.js代码如下(使用、讲解、相关说明全部在注释中):

————————————————————————–
/**
 * =========================================================================
 * 本程序可自由复制、修改、传播,不得删除以下信息。如用于商业用途须经原作者同意方可使用。
 * =========================================================================
 * 程序名称:ForceWindow(@iClass.JS)
 * 描  述:“冲破”广告拦截软件,强制弹出窗口。
 * 版  本:1.0.0
 * 创建时间:2004年1月19日
 * 修改时间:2004年1月19日
 * 文件名称:ForceWindow.iclass.js
 * 作  者:钟钟
 * 邮箱地址:zz@iecn.net zz315@163.com
 * 版权声明:本程序属于iClass.JS,版权归作者所有。
 * 有关iClass计划详见:http://www.iecn.net/forum/showthread.php?threadid=14811
 * =========================================================================
 */

/**
 * 定义ForceWindow类构造函数
 * 无参数
 * 无返回值
 */
function ForceWindow ()
{
  this.r = document.documentElement;
  this.f = document.createElement(“FORM”);
  this.f.target = “_blank”;
  this.f.method = “post”;
  this.r.insertBefore(this.f, this.r.childNodes[0]);
}

/**
 * 定义open方法
 * 参数sUrl:字符串,要打开窗口的URL。
 * 无返回值
 */
ForceWindow.prototype.open = function (sUrl)
{
  this.f.action = sUrl;
  this.f.submit();
}

/**
 * 实例化一个ForceWindow对象并做为window对象的一个子对象以方便调用
 * 定义后可以这样来使用:window.force.open(“URL”);
 */
window.force = new ForceWindow();

/**
 * 用本程序弹出的窗口将不会被广告拦截软件拦截,但有一个缺点:你无法象对window.open弹出的窗口那样对外观进行定制。
 * 你当然也可以在使用前实例化一个ForceWindow对象:
 * var myWindow = new ForceWindow();
 * 这样来使用:
 * myWindow.open(“URL”);
 * 本程序测试通过的浏览器:IE 5+、Firefox 1.0、Mozilla 1.7.5、Netscape 7.2、Opera 7.23
 * 友情提示:如果你将本程序用于强制弹出广告,请更多的想想浏览者的感受!
 */

 

 

 

5.绕过拦截方法三

绕过拦截的弹出窗口 ——————
    弹出窗口示例
    window_open.html
    faisun@sina.com
–>

 

 

6.其它不被拦截的情况

   对于页面中通过链接打开的窗口一般不会被拦截.

 当按住CTRL 键时 可以临时允许弹出窗口!


推荐阅读
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
author-avatar
aloneloveu2005
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有