禁止右键访问----破解与攻防
要禁止访问者查看网页源代码,我们首先要了解一下查看源代码的方式(以IE 5.0为例)。一是右键菜单方式; 二是窗口菜单栏查看方式,即选择"查看"*"源文件"方式。要彻底禁止访问者查看网页源代码,就必须屏蔽这2种查看源代码的方式。
屏蔽右键菜单查看方式
现在,很多网页采用如下代码屏蔽右键菜单:
< Script Language=javascript>
function Click(){
if(event.button==2){alert
('版权所有(C)abandonship');
}}
document.οnmοusedοwn=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.οncοntextmenu=Click;
< /Script>
这样无论采取什么方式点击鼠标,都不会再出现快捷菜单了。不过值得注意的是,如果访问者直接在浏览器地址栏中键入"javascript:alert(document.οncοntextmenu='')",就可以解除对右键菜单的屏蔽。对这类访问者怎样防范呢?其实,把地址栏隐藏掉就可以了,具体方法见本文介绍的"屏蔽窗口菜单栏查看方式"。
屏蔽窗口菜单栏查看方式
制作过网页的朋友都知道,对新打开窗口的各种属性可以进行控制,具体包括控制菜单栏、滚动条及地址栏是否可见等。如果把父窗口关闭,并将新打开窗口的菜单栏和地址栏隐藏,不就可以屏蔽窗口菜单栏查看方式了吗?实现代码如下:
< 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.οncοntextmenu=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.οnkeydοwn=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"; οnpaste="return false";><!--防止选择和粘贴-->
选择字符试试abandonship
<input size=30>
<!--
function key(){
if(event.shiftKey){
window.close();}
//禁止shift
if(event.altKey){
window.close();}
//禁止alt
if(event.ctrlKey){
window.close();}
//禁止ctrl
return false;}
document.οnkeydοwn=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"; οnpaste="return false";><!--防止选择和粘贴-->
选择字符试试abandonship
<input size=30>
相关文章
- 电路板级的电磁兼容性EMC
从PCB布线,电路设计,元器件3方面来分析EMC。...
2023/8/14 15:17:05 - 通信协议- IIC和SPI
IIC(intel integrated circuit)和SPI(serial peripheral interface)是一种低速短距离通信总线。 SPI没有明文规定。 IIC可多主总线,SPI是单主总线。 传输速度: SPI有多快传多快。 IIC:标准模式…...
2023/8/14 11:01:22 - 单片机的概述
单片机类别: 单片机也有其他说法,微控制器,微处理器(dsp) 按照单片机的内核(ip核)分类:51系列,AVR系列,ARM系列(ARMv1~ARMv8架构,ARM11后用cortex命名,cortex系列是armv7架构,A:虚拟内存 操作系…...
2023/8/14 15:17:04 - 电源的恒压与恒流原理
电源的恒压与恒流原理 一、恒压与恒流的概念 恒压指的是电源以恒定电压输出,负载大小的变化不会改变输出电压,但是输出电流可能会变化。 恒流与恒压类似。 二、应用场合 恒流技术一般用于驱动LED,驱动比例阀等对电流有要求对象。 恒压技术一…...
2023/8/14 14:27:59 - vs2005 MFC界面自绘图形BMP按钮时,设置按钮的位置问题
步骤1:按钮button的属性Owner Draw设置为True; 步骤2:在BOOL CChargeDlg::OnInitDialog()函数中调用SetWindowPos(HWND hWnd,HWND hWndInsertAfter,int X,int Y,int cx,_In_ int cy, UINTuFlags)设置按钮的位置,如下 CWnd *pWnd;…...
2023/8/14 10:16:38 - Qt Widgets 与 QML/Qt Quick的区别,什么时候使用哪种?
(Qt4版本是qt gui Application , Qt5之后, gui界面用widgets可以做, 用qml也可以做, 就分开了。故widgets Application 选项 就是qt GUI Application) 一.Qt Widgets适合传统的桌面程序开发 二.Qt Quick 是 Qt 4.7 主推的技术, Qt 官网介绍:Qt Quick 是…...
2023/8/14 15:17:05
最新文章
- asp定义的数连接串
在ASP中连接数据库一、存取数据库的原理 在ASP中,用来存取数据库的对象统称ADO对象(Active Data Objects),主要含有三种对象:Connection、Recordset和Command,其中Connection负责打开或连接数据库ÿ…...
2023/8/14 10:13:08 - 用asp编写验证码
<div align"center"><font size"2">校验码 <%for i1 to 4Randomizernumint(rnd()*35)1str"0123456789abcdefghijkLmnopqrstuvwxyz"selectstrselectstr&mid(str,rnum,1)nextfor i1 to 4 imgnamemid(selectstr,i,1) %><…...
2023/8/14 17:03:47 - 在asp编程中trim函数的详述及漏洞破解与防护
在asp编程中,我们常常使用trim(rtrim,ltrim)函数去掉一些数据的开头和结尾的空格,笔者最近写了一个asp聊天室,有下面的一段代码: <% dim name,title nametrim(request.form("name")) passwordtrim(request.f…...
2023/8/14 10:14:08 - c#中DataList的使用
DataList控件的应用中。可以处理用户点击事件。在aspx代码中:<asp:DataList id"datalist2".......加入OnItemCommand "DataList_ItemCommand"然后加入下面的C#代码:void BindList()DataList2用{string commstr "select * …...
2023/4/16 8:00:33 - asp中建立搜索的不同方法
searchfunction:<meta http-equiv"Content-Type" content"text/html; charsetgb2312"><%sub searchinfo() 如果是新查询if request("search")"1" thensession("sessionok")""end if 如果不…...
2023/4/16 8:00:31 - asp+存储过程的使用
在ASP中调用存储过程 <!-- 必须加载adovbs.inc文件,否则将出错 --><!--#include file"adovbs.inc"--><%dim objCnndim objCmddim Rsconst o_id112 -----建立Connection对象----------set objCnnServer.CreateObject("Adodb.connect…...
2023/8/14 18:58:24 - 国内可使用chatGPT的十三种方式
国内AI 1. 开放猫 Chat机器人https://mirrorchat.extkj.cn/ chat机器人: Chat机器人https://mirrorchat.extkj.cn/ 3.免费学习测试 免费学习测试https://chat.wuguokai.cn/#/chat/1683348236237 4.AI文本工具站 AI文本工具站一个用于提高工作效率的文本工具网站,应用…...
2023/8/14 13:04:36 - 基于ChatGPT3.5 API实现的私有化web程序源码+使用说明,一键部署属于自己定制化的 chatgpt web 程序
chatgpt-web 本项目可以一键部署属于自己定制化的 chatgpt web 程序(兼容gpt3.5), 只需下载release中对应平台的项目文件,修改配置后执行,打开 http://127.0.0.1:8080 ,便可以获得属于自己的chatgpt网站。 参考项目:co…...
2023/8/14 19:59:25 - ChatGPT Plus用户专享:86款高效功能插件,详尽安装与使用全攻略
在前天的文章中,我们介绍了 ChatGPT 开放的全新模式 Web Browsing(网页浏览),启用后 ChatGPT 就可以开始上网,收集最新的互联网资料进行作答。 其他关于chatgpt使用方面:请访问: 链接…...
2023/8/14 10:16:53 - ChatGPT自然语言处理的新里程碑
ChatGPT中文网是一个面向中国用户的聊天机器人网站,旨在为国内用户提供一个自然的环境、有趣、实用的聊天体验。它使用最新的自然语言处理技术来帮助用户更好地理解他们的聊天对话,还可以帮助用户解决日常生活中的问题,提供有趣的谈话内容以及…...
2023/8/15 8:22:45 - 国内版ChatGPT最全使用方法及使用用途技巧汇总
ChatGPT人工智能技术的出现确实会让一些人担心自己的工作会不会被取代。但实际上,人工智能技术只会替代那些可以被程序自动化的重复性、标准化、无脑力的工作,而对于需要人类创意、想象力和复杂思维的工作来说,AI人工智能技术的发展对于人类来…...
2023/8/14 10:55:47 - ChatGPT和Midjourney王炸组合,开启AI新时代
目录 序言 一:使用ChatGPT进行对话 二:调用newbies robot 三:举例说明 四:付费和使用限制 序言 随着人工智能技术的不断发展,越来越多的人开始使用人工智能工具来创作图画。在这里,我将分享如何结合Ch…...
2023/8/15 10:03:43