`
yiminghe
  • 浏览: 1465376 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用 javascript 篡改用户的复制内容

阅读更多

早期互联网上流行的防止copy方法,禁掉右键,其实查看源代码或者 ctrl-c 后,秘密就无处遮掩了,只防纯小白。这次实验新的方法来解决查看源代码与 ctrl-c 的问题(当然 firebug 类工具还是无法欺骗的),首先声明我支持开放,Just For Fun !(感谢 lifesinger 的关键技术点探索)。

 

PS:根据众多网友反馈,该方法在使用浏览器工具栏编辑菜单复制时失效,也可改作监听尚不标准但广泛实现的 copy 事件,那么这时也不需要禁用右键 了。

 

no-copy demo

 

1.看 html 源代码 :空,内容全部由 javascript 生成,缺点就是 SEO 悲剧了。

 

2.看 javascript 源代码 :要抽取你想要的内容,先不说业务复杂情况下看懂的成本,首先先要 unicode 解码,如果内容飞散开来,即使开发者估计也会望而却步吧。

 

3.最后:ctr-c 看看你的剪贴板吧

 

原理:


其实很简单:


1.监控 ctrl -c 按键 copy 事件,选择警告信息 textarea,这样子 ctrl-c copy 就会作用到警告信息textarea 了,剪贴板中就是警告信息了。

 

<textarea>禁止copy!</textarea>

 

2.阻止 document 上的 contextmenu 事件



3.选择区域的恢复,在 select textarea 后,异步恢复原先用户的选择区域,这样才能真正神不知鬼不觉:)

 


源码:


no-copy 源码

 


应用点2:阻止 copy 钓鱼网址

 

 

有时候不法网页中会发布一些钓鱼网站 (fraud?),为了伪装会采用:

 

 

http://www.tao<span style="display:none;">123</span>bao.com
 


当你复制后,如果不注意直接黏在浏览器上打开就中计了,仔细一点会发现其实复制的是 http://www.tao123bao.com,这种情况下就可以利用上面的方法,过滤用户原先复制的内容进而篡改用户 copy 的内容,实现乾坤大挪移:



no-fraud demo

 

 

注意点:


1.ie 与 标准浏览器的range区别

 

2.非法内容的过滤,如不可见标签内容:

 

function clear(node) {
        var style = node.style;
        if ((style.position != "" && style.position != "static")
                ||
                style.display == "none"
                || style.visibility == "hidden"
                ) {
            node.parentNode.removeChild(node);
            return true;
        }
        return false;
    }
 

3.事前保存选择区域,事后进行选择区域恢复

 

no-fraud 源码

 

 

修订于:2010-08-13

分享到:
评论
6 楼 hanwei59 2010-08-01  
yiminghe 写道
hanwei59 写道
            //异步
            setTimeout(function() {
                r.select();
            }, 0);


0毫秒之后执行?不明白这个怎么异步的 

为了使浏览器能够把当前选中的数据放到剪贴版
参见:http://yiminghe.iteye.com/blog/636369

多谢。好像明白了,是为了在当前事件结束后再执行,因为当前事件的代码里也有调用了select();
5 楼 leovannys 2010-07-29  
FF: 选中,拖到地址栏或者搜索栏
IE: 选中,加速器中随便选一个...
4 楼 yiminghe 2010-07-27  
hanwei59 写道
            //异步
            setTimeout(function() {
                r.select();
            }, 0);


0毫秒之后执行?不明白这个怎么异步的 

为了使浏览器能够把当前选中的数据放到剪贴版
参见:http://yiminghe.iteye.com/blog/636369
3 楼 hanwei59 2010-07-27  
            //异步
            setTimeout(function() {
                r.select();
            }, 0);


0毫秒之后执行?不明白这个怎么异步的 
2 楼 yiminghe 2010-07-27  
AutumnHealth 写道
我觉得这种行为是徒劳的。只要用户看到内容,就是说明内容已经下载到本地。这种禁止反而会伤害用户体验。就算把内容用图片来展现也无济于事,图片也下载到本地了。

上面那个demo,我在linux下选中,然后中键就是粘贴。将来还会有更方便的操作方式。说难听点,这种禁止复制有点“反人类”的味道 :-)

更关键的应该是引导用户,提高用户的版权意识和尊重他人的劳动成果。这才是正道。


Just For Fun....我支持开放,linux还有中键的啊,还以为考虑了mac command+c就够了呢
1 楼 AutumnHealth 2010-07-27  
我觉得这种行为是徒劳的。只要用户看到内容,就是说明内容已经下载到本地。这种禁止反而会伤害用户体验。就算把内容用图片来展现也无济于事,图片也下载到本地了。

上面那个demo,我在linux下选中,然后中键就是粘贴。将来还会有更方便的操作方式。说难听点,这种禁止复制有点“反人类”的味道 :-)

更关键的应该是引导用户,提高用户的版权意识和尊重他人的劳动成果。这才是正道。

相关推荐

    html中js点击一键复制功能,兼容各大浏览器,非flash版本

    1. 防止跨站脚本攻击(XSS):确保复制的文本来源于可信源,避免用户数据被恶意篡改。 2. 用户提示:在复制成功或失败后,可以通过弹出消息或改变按钮状态告知用户。 总结: 本文介绍了如何使用JavaScript在HTML中...

    Tasi_javascript_

    9. **安全性**:JavaScript也可以参与一些安全措施,如使用哈希算法加密传输数据,防止数据被篡改。 10. **错误处理**:通过JavaScript,系统可以捕获并处理可能出现的错误,如网络中断,保证考试过程的稳定性。 ...

    手机移动端 js复制粘贴.zip

    7. **安全与隐私**: 使用`Clipboard API`时,必须遵循浏览器的安全策略,例如只能在用户交互后进行读写操作,以防止恶意代码窃取或篡改用户数据。 8. **示例代码分析**: 压缩包中的“demo”可能包含了一个简单的...

    JavaScript Obfuscator

    这可能是JavaScript Obfuscator的安装程序,允许用户在本地计算机上安装完整的混淆器软件,以便离线使用和管理JavaScript混淆任务。安装程序通常会包含所有必要的组件,如混淆引擎、配置工具和可能的附加功能。 5....

    JavaScriptobfuscator是一款功能强大的JavaScript和Nodejs免费混淆器

    在Web开发领域,源代码暴露可能会导致恶意用户分析、复制甚至攻击,因此混淆代码成为了一种必要的保护措施。JavaScript Obfuscator通过一系列复杂的转换过程,将可读性强的源代码转化为难以理解的形式,从而降低被...

    javascript格式化工具

    如果不加以保护,这些代码很容易被竞争对手或恶意用户分析、复制甚至篡改。JavaScript加密工具通过采用混淆技术,将代码中的变量名、函数名以及执行逻辑变得难以理解,这样即便代码被他人获取,也难以逆向解析出原始...

    ZeroClipboard解决跨浏览器复制到剪贴板的问题

    在浏览器环境中,JavaScript原生并不支持直接操作剪贴板,主要是为了防止恶意代码窃取或篡改用户数据。但是,用户对网页中的数据进行复制粘贴的需求是普遍存在的,这就催生了像ZeroClipboard这样的工具。 ...

    Javascript脚本混淆器

    JavaScript脚本混淆器是一种工具,它的主要目的是保护JavaScript代码的安全性,防止未经授权的用户阅读、复制或篡改代码。在Web开发中,由于JavaScript代码通常是以明文形式发送到客户端,这使得它容易受到诸如代码...

    Javascript-siteLock:Javascript网站锁

    8. 防绕过策略:为了提高安全性,siteLock可能还需要采取一些防绕过措施,比如检测用户是否篡改了JavaScript代码,或者使用混淆技术让代码更难被理解。 总结起来,JavaScript-siteLock项目利用JavaScript的事件处理...

    PageGuardjs是一个可以阻止网页被复制打印和在开发者工具中打开

    PageGuardjs是一个专门针对网页保护的JavaScript库,其主要功能是防止网页内容被用户非法复制、打印以及在浏览器的开发者工具中查看,从而为网站所有者提供了一种增强内容安全性的解决方案。在JavaScript开发领域,...

    js修饰动画菜单

    JavaScript是一种广泛使用的客户端脚本语言,它可以实时更新网页内容,增加用户的互动性。在这个案例中,我们用JavaScript来控制菜单项的显示、隐藏、动画效果以及响应用户的点击事件。例如,当鼠标悬停在菜单项上时...

    tm-scripts:篡改猴子脚本

    在本案例中,“篡改猴子脚本”可能指的是使用JavaScript编写的工具,它可以自动修改或操纵其他脚本的行为,类似于自动化测试中的“Monkey Testing”,即通过随机输入来检测应用的稳定性和健壮性。 “tm-scripts-...

    javascript混淆

    JavaScript混淆是一种技术,用于使JavaScript代码变得难以阅读和理解,以此来提高代码的安全性,防止他人轻易地查看、复制或篡改代码。在Web开发中,由于JavaScript代码通常是明文暴露在客户端,混淆就显得尤为重要...

    javascript 加密解密软件

    JavaScript代码通常在客户端执行,这使得它容易被查看和篡改。为了保护源代码不被轻易读取或复制,开发者会采用加密技术。常见的加密方法包括混淆、编码转换和使用第三方加密库。 `redecoder`软件能够处理这些加密...

    javascript 代码加密器(web版)

    JavaScript代码加密器是一种工具,主要用于保护Web应用中的源代码,防止未经授权的访问、复制或篡改。在Web环境中,由于JavaScript代码通常是明文传输的,所以对于敏感的业务逻辑或者防止竞争对手抄袭,代码加密显得...

    javascript经典特效---加密源代码脚本.rar

    JavaScript作为客户端的主要脚本语言,其代码在用户浏览器上执行,容易被查看和复制,这可能导致敏感信息泄露或者恶意篡改。因此,对JavaScript源代码进行加密显得尤为重要。本文将围绕"javascript经典特效——加密...

    跨浏览器 将文字复制到剪粘板

    出于安全考虑,JavaScript默认不允许直接操作用户的剪贴板,防止恶意代码窃取或篡改用户数据。因此,早期的Web应用通常借助Flash技术来绕过这些限制,因为Flash允许与用户的剪贴板进行交互。 ZeroClipboard是一个...

    JavaScript *.js 混淆工具 ESC-1.14

    为了保护代码不被轻易查看和篡改,开发者有时会使用混淆工具来处理JavaScript文件,这就是"JavaScript *.js 混淆工具 ESC-1.14"的主要作用。 混淆工具,如ESC-1.14,其主要功能是将清晰易读的JavaScript代码转换为...

    js剪贴板插件clipboard.js

    出于安全考虑,浏览器不允许JavaScript直接访问剪贴板内容,以防恶意脚本读取或篡改用户数据。然而,随着HTML5的推进,Web API中引入了`Clipboard API`,允许在用户授权的情况下进行剪贴板操作。clipboard.js正是...

    页面水印控件

    2. 使用场景:JavaScript水印常用于防止网页内容被复制、截图或打印时去除,适用于新闻网站、博客、在线文档和报表等。 3. 实现方式:常见的实现方法包括直接在HTML元素上设置CSS样式,或者通过JavaScript动态添加...

Global site tag (gtag.js) - Google Analytics