要禁止访问者查看网页源代码,我们首先要了解一下查看源代码的方式(以IE 5.0为例)。一是右键菜单方式; 二是窗口菜单栏查看方式,即选择"查看"*"源文件"方式。要彻底禁止访问者查看网页源代码,就必须屏蔽这2种查看源代码的方式。
屏蔽右键菜单查看方式
现在,很多网页采用如下代码屏蔽右键菜单:
< Script Language=javascript>
function Click(){
if(event.button==2){alert
('版权所有(C)abandonship');
}}
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)abandonship');
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)abandonship');
window.event.returnValue=false;
}
document.oncontextmenu=Click;
< /Script>
< /Head>
< Body>
... ...
< /Body>
最佳方案
<script language="JavaScript">
<!--
function key(){
if(event.shiftKey){
window.close();}
//禁止shift
if(event.altKey){
window.close();}
//禁止alt
if(event.ctrlKey){
window.close();}
//禁止ctrl
return false;}
document.onkeydown=key;
if (window.Event)
document.captureEvents(Event.MOUSEUP);
function nocontextmenu(){
event.cancelBubble = true
event.returnValue = false;
return false;}
function norightclick(e){
if (window.Event){
if (e.which == 2 || e.which == 3)
return false;}
else
if (event.button == 2 || event.button == 3){
event.cancelBubble = true
event.returnValue = false;
return false;}
}
//禁止右键,避免弹出窗口给予漏洞
document.oncontextmenu = nocontextmenu; // for IE5+
document.onmousedown = norightclick; // for all others
//-->
</script>
<body onselectstart="return false"; onpaste="return false";><!--防止选择和粘贴-->
选择字符试试abandonship
<input size=30>
<script language="JavaScript">
<!--
function key(){
if(event.shiftKey){
window.close();}
//禁止shift
if(event.altKey){
window.close();}
//禁止alt
if(event.ctrlKey){
window.close();}
//禁止ctrl
return false;}
document.onkeydown=key;
if (window.Event)
document.captureEvents(Event.MOUSEUP);
function nocontextmenu(){
event.cancelBubble = true
event.returnValue = false;
return false;}
function norightclick(e){
if (window.Event){
if (e.which == 2 || e.which == 3)
return false;}
else
if (event.button == 2 || event.button == 3){
event.cancelBubble = true
event.returnValue = false;
return false;}
}
//禁止右键,避免弹出窗口给予漏洞
document.oncontextmenu = nocontextmenu; // for IE5+
document.onmousedown = norightclick; // for all others
//-->
</script>
<body onselectstart="return false"; onpaste="return false";><!--防止选择和粘贴-->
选择字符试试abandonship
<input size=30>
分享到:
相关推荐
攻防世界Erik-Baleog-and-Olaf,misc。 此题详细解题博客:https://blog.csdn.net/m0_59188912/article/details/127615829
### 无线攻防:破解WEP密钥过程全解 #### WEP:无线网络安全最初的保护者 随着无线局域网(WLAN)技术的发展,“安全”一直是伴随无线网络的重要议题。由于无线信号易于被截获,因此确保无线网络的安全至关重要。...
内网安全攻防涉及到一系列的手段和方法,目的是在内部网络中发现和修补安全漏洞,防止未授权访问,确保网络和数据的安全。 一、内网渗透测试基础 1. PowerShell简介 PowerShell是微软推出的一个基于.NET框架的任务...
【标题】"攻防世界Training-Stegano-1" 是一个关于信息安全领域的训练题目,主要涉及的是隐写术(Steganography)技术。隐写术是一种隐藏信息的技术,通常用于在图像、音频或文本中嵌入秘密数据,使得非授权者无法...
攻防世界hit-the-core,杂项misc。 此题详细解题博客:https://blog.csdn.net/m0_59188912/article/details/127626829
RememberMe 功能旨在使用户在访问网站时无需反复输入认证信息。然而,由于RememberMe的实现存在反序列化问题,攻击者可以通过构造恶意的RememberMe cookie值,触发框架内部的反序列化过程,从而执行任意命令。 **受...
打通从实战仿真到实战的壁垒,依托网络靶场开展实网攻防,从源头上完成“学、练、打”三位一体,面向实战,面向未来。 网络靶场的理想模型与发展趋势 在网络对抗、Testbed的专业赋能 实战型靶场演进方向
--网络攻防-含-常见的几种企业网络安全解决方案、黑客入侵过程.doc
网络安全-攻防软件-冰蝎
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料...网络攻防技术-实现Tor 加密流量分类(源码).zip
AHZY-内网安全攻防2020-01-12 内网安全攻防知识分享,第12章节ppt
AHZY-内网安全攻防2020-01-12 内网安全攻防知识分享,第11章节ppt