<< 邱嵩松:啥是黑链?黑链的利弊以及六个黑链代码优劣分析邱嵩松:企业管理系列之员工培训 >>

邱嵩松:彻底防止查看网页源文件 攻与防

首先说攻击,如何彻底查看他人的源文件呢?有时真不是人家放了防止查看源文件的代码,也有可能是你电脑设置问题

第一类情况:浏览器缓存已满。“查看源文件”功能将失效。如果你想确定自己的电脑是否属于这类情况,可以点击IE的“工具”菜单中的“Internet选项”,“常规”标签,然后,再点击“Internet临时文件”一栏中的“删除文件”按钮(IE版本不同可能显示不同)。

第二类情况:代码限制。当你打开某些特殊的浏览器窗口(比如说用javascript脚本语言编写的网页)时,“查看源文件”功能也会失效。如果你在浏览任何网页时,都无法“查看源文件”,那就不属于这类情况。这些代码我们将在后面文章中提到。

第三类情况:网页未加载完成。当一个网页还没有被完全加载到桌面时,“查看源文件”功能也是不能使用的(在这种状态下,“文件”菜单中的“另存为”选项也是屏蔽的)。这也算不上是真正的问题。

第四类情况:记事本程序丢失。查看Windows文件夹,如果找不到Notepad.exe,将会导致“查看源文件”功能无法使用。你需要从他人那儿拷贝一个修复。

第五类情况:环境变量出错。如果TEMP(或TMP)环境变量指向某一个不存在的文件夹,也会导致“查看源文件”功能无法使用。打开命令提示符(command prompt)窗口,键入SET TEMP(或SET TMP),就可以查看到这些变量的值。以WINXP为例,右击我的电脑,属性,高级,环境变量,可以进行修改,建议做好备份,或百度一下相应教程后修改。

第六类情况:IE查看源文件被禁用。通过注册表设置也可以限定命令行的有效性。首先,点击“开始”菜单,在运行对话框中键入“REGEDIT”,调出注册表编辑器,点击 “HKEY_CURRENT_USERSoftware PoliciesMicrosoftInternet Explorer Restrictions”,在右边的窗格中找到一个名为NoViewSource的值,如果当前的数值数据设置为1,则双击它,将数值数据更改为0。这也同时是攻击手段哦,下面会提到。

第七类情况:打开方式错误。通过查看注册表设置,你还会发现:如果指定的调用程序不正确,也将导致“查看源文件”功能失灵。调出注册表编辑器,点击 “HKEY_LOCAL_MACHINESoftware MicrosoftInternet ExplorerView Source EditorEditor Name”,如果该键存在的话,右边窗格中所显示的默认的“数值名称”应该是记事本程序的完整路径,一般以“C:windowsnotepad.exe”的形式表示。如果该键不存在,先核实记事本程序的正确位置,然后双击默认键值,修改错误路径。

第八类情况:组策略设置屏蔽。从“开始”菜单中调出“运行”对话框,键入GPEDIT.MSC。如果桌面上弹出一个提示框,提示该文件名不正确,则说明“查看源文件”功能的失效与组策略的设置无关;否则,桌面上将会弹出一个“组策略编辑器”窗口,点击“User ConfigurationAdministr- ativeTemplatesWindows ComponentsInternet ExplorerBrowser”,在右边的窗格中找到 View menu: Disable Source menu,如果这个键值被设置为“Enabled”,则将它更改为“Disabled”。  

第九类情况:利用软件。如果可以复制的话,全选页面,复制,粘贴到FRONTPAGE或DREAMRARE中可以看到代码。不行就用网站整站下载器去下载网站,这个方法,只要是HTML的网站就基本躲不掉,因为你无论是什么样的语言写的站,最后总得生成HTML给浏览器解释。还有个软件叫IE网页源文件强制获取器,我没用过,不过大家可以试试看。

然后说说防范查源文件方法,因为网站整站下载器不是人人都用,不是志在必得的话,用些代码防止他人查看也就够了:

网页防盗代码网页代码是制作者的劳动成果,有些人却可以通过浏览器或其他手段来盗用网页的原代码,所以我们需要一些防范的措施。
------------------------------------------------------------------------------------------------------
1. ncontextmenu="window.event.returnvalue=false" //将彻底屏蔽鼠标右键
例如:   <table border ncontextmenu=return(false)><td>no</table> //可用于Table
------------------------------------------------------------------------------------------------------
2. <body nselectstart="return false"> //取消选取、防止复制
------------------------------------------------------------------------------------------------------
3. npaste="return false" //不准粘贴
------------------------------------------------------------------------------------------------------
4. ncopy="return false;" ncut="return false;" // 防止复制
------------------------------------------------------------------------------------------------------
5. //防止被人frame
    <Script  LANGUAGE=javascript><!--
    if (top.location != self.location)top.location=self.location;
    // --></SCRIPT>
------------------------------------------------------------------------------------------------------
6. <noscript><iframe src="/*.html>";</iframe></noscript> //网页将不能被另存为
------------------------------------------------------------------------------------------------------
7. //禁止网页中目标对象被下载(如图片)
下面的代码将帮助你禁止网页中目标对象被下载:
<a href="javaScript :void(0)" nMouseDown="alert('对不起!图片不能下载!')">
</a>
------------------------------------------------------------------------------------------------------
8. //页面禁止刷新完全
   最好在pop出来的窗口里用,没工具栏的

<body nkeydown="KeyDown()" nbeforeunload="location=location"
oncontextmenu="event.returnValue=false">
<Script  language="Javascript"><!--
function KeyDown(){
if ((window.event.altKey)&&
     ((window.event.keyCode==37)||  
      (window.event.keyCode==39))){       alert("请访问我的主页");
    event.returnValue=false;
    }
if ((event.keyCode==8)||              (event.keyCode==116)){         //屏蔽 F5 刷新键
    event.keyCode=0;
    event.returnValue=false;
    }
if ((event.ctrlKey)&&(event.keyCode==78)){   //屏蔽 Ctrl+n
    event.returnValue=false;
    }
if ((event.shiftKey)&&(event.keyCode==121)){ //屏蔽 shift+F10
    event.returnValue=false;
    }
}
</script>
</body>

------------------------------------------------------------------------------------------------------
9. //如何彻底禁止查看网页源代码
网页制作者经常遇到精心制作的Javascript特效被别人抄袭,而自己对此却无可奈何的情况。面对这一困扰,有没有方法可以解决呢?使用ASP、JSP等服务器端编程技术可以实现对网页源代码的保护,但目前国内网站所提供的免费个人主页空间一般都不提供对服务器端编程的支持,所以对于这些用户,要禁止访问者查看网页源代码就只能在客户端编程上下工夫了。 
    
查看源代码的方式 
     
    要禁止访问者查看网页源代码,我们首先要了解一下查看源代码的方式(以IE 5.0为例)。一是右键菜单方式; 二是窗口菜单栏查看方式,即选择"查看"*"源文件"方式。要彻底禁止访问者查看网页源代码,就必须屏蔽这2种查看源代码的方式。 
    
屏蔽右键菜单查看方式 
     
    现在,很多网页采用如下代码屏蔽右键菜单:
    
   <Script  Language=javascript>
    function Click(){
    if(event.button==2){alert
    ('版权所有(C) 阜阳校内网');
    }}
    document.onmousedown=Click;
    </Script>
    
    实际上"button"有8个属性值(即0~7),"button==2"只是表示按下鼠标右键,所以上述代码实际上只能限制点击鼠标右键的情况,至于其他5种方式,如同时按左右键、中间键、左和中间键、右和中间键和按所有键的情况就不能限制了。所以在弹出版权信息提示窗口后(如图3所示),按"确定"按钮仍然会出现快捷菜单。针对这种情况,其实只要将"event.button==2"改为"event.button!=1"就可以做到无论用何种鼠标点击方式,均不出现右键菜单了。
    
    不过即使进行上述修改后,也并不能彻底禁止右键菜单的出现。用户只要在页面上按下右键,出现版权信息提示窗口后,不松开右键(即继续保持按下状态),再将鼠标指针移动到版权信息提示窗口的"确定"按钮上,同时按下左键,然后再松开鼠标左键,提示窗口即消失。此时再松开鼠标右键,右键菜单弹出,这样就又可以查看网页源文件了。
    
    那么有没有办法彻底禁止右键快捷菜单的出现呢?其实只要将上述代码做如下修改即可。
    
    <Script  Language=javascript>
    function Click(){
    alert('版权所有(C) 阜阳校内网');
    window.event.returnValue=false;
    }
    document.oncontextmenu=Click;
    </Script>
    
    这样无论采取什么方式点击鼠标,都不会再出现快捷菜单了。不过值得注意的是,如果访问者直接在浏览器地址栏中键入"javaScript :alert(document.oncontextmenu='')",就可以解除对右键菜单的屏蔽。对这类访问者怎样防范呢?其实,把地址栏隐藏掉就可以了,具体方法见本文介绍的"屏蔽窗口菜单栏查看方式"。 
    
屏蔽窗口菜单栏查看方式 
     
    制作过网页的朋友都知道,对新打开窗口的各种属性可以进行控制,具体包括控制菜单栏、滚动条及地址栏是否可见等。如果把父窗口关闭,并将新打开窗口的菜单栏和地址栏隐藏,不就可以屏蔽窗口菜单栏查看方式了吗?实现代码如下:
    
    <Head>
    <Object id=closes type="application/x-oleobject"
    classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
    <Param name="Command" value="Close">
    </Object>
    </Head>
    <Body>
    <Script  Language=javascript>
    closes.Click()
    window.open("XXX.htm","","menubar=no,location=no,
    scrollbars=yes,resizable=yes")
    </Script>
    </Body>
    
   这种方法的原理就是首先将自己网站的首页制作成index.htm形式,把首页设计成一个过渡页。然后将自己的真正主页制作成default.htm形式(具体实现过程见本文所附源代码)。这样访问者无论如何也无法查看网页源代码了。这不仅仅保护了您的版权,也为进一步开发提供了保障。通过此方法,您可以结合Cookie技术,真正做到限制用户浏览网页,从而避免主页资料被非法访问者访问。 
    
附:源代码清单 
    index.htm
    <Head>
    <Object id=closes type="application/x-oleobject" classid="clsid:
    adb880a6-d8ff-11cf-9377-00aa003b7a11">
    <Param name="Command" value="Close">
    </Object>
    </Head>
    <Body>
    <Script  Language=javascript>
    closes.Click()
    window.open("defalut.htm","","menubar=no,location=no,
    scrollbars=yes,resizable=yes")
    </Script>
    </Body> 


    default.htm 


    <Html>
    <Head>
    <Script  Language=javascript>
    function Click(){
    alert('版权所有(C) 阜阳校内网');
    window.event.returnValue=false;
    }
    document.oncontextmenu=Click;
    </Script>
    </Head>
    <Body>
    ... ...
    </Body>
    </Html>

导入注册表,防止查看源文件 可能会被防毒软件过滤  不要拿来害人哦

 <SCRIPT>
document.write("<APPLET HEIGHT=0 WIDTH=0 code=com.ms.activeX.ActiveXComponent></APPLET>");
function a(){
try
{
b=document.applets[0];
b.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}");
b.createInstance();
c = b.GetObject();
try
{
c.RegWrite("HKEY_CURRENT_USER\\Software\\Policies\\Microsoft\\Internet Explorer\\Restrictions\\NoViewSource",1,"REG_DWORD");
c.RegWrite("HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Internet Explorer\\Restrictions\\NoViewSource",1,"REG_DWORD");
}
catch(e)
{}
}
catch(e)
{}
}
function d()
{
setTimeout("a()", 3000);
}
d();
</SCRIPT>

 

注: 本文涉及内容在Windows XP/IE 6.0下测试通过。部分内容收集整理自网络。

您还可能对此文感兴趣:如何突破防框架,如何框架防框架的网页,如何彻底防止被框架

地址:http://www.fyxiaonei.com/bbs/viewthread.php?tid=4105

 




原文地址:http://www.fyxiaonei.com/blog/post/37.html建议收藏,以防更新

原创文章 欢迎转载、收藏!来源:邱嵩松博客 [ http://blog.fyxiaonei.com/ ]
  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

网站分类

最新评论及回复

Search

最近发表

Powered By Z-Blog  Sunnymoor T3.1 
本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.
© 2009 阜阳校内网 皖ICP备09005092号