清除剪贴板以禁止未经授权的复制,插入消息?

Posted

技术标签:

【中文标题】清除剪贴板以禁止未经授权的复制,插入消息?【英文标题】:Clear clipboard to prohibit unauthorised copying, insert message? 【发布时间】:2013-05-20 20:49:16 【问题描述】:

使用 ctrl+c 复制网站数据时,是否可以将自己的消息写入剪贴板?我发现了一些清除剪贴板的 javascript - 很高兴知道是否有一些东西可以写入它,即将剪贴板中的文本替换为“请使用我们网站的印刷版”之类的内容。

  function clearData() 
    window.clipboardData.setData('text', '')
  

  function cldata() 
    if (clipboardData) 
      clipboardData.clearData();
    
  
  setInterval("cldata()", 1000);
<body ondragstart="return false;" onselectstart="return false;" oncontextmenu="return false;" onload="clearData();" onblur="clearData();">

  <h1>Example text</h1>
<input type="text">

【问题讨论】:

试图颠覆标准浏览器功能的网站真的很烦人。请不要! 用户仍然可以在本地将页面保存为 html,然后从其中复制文本... 【参考方案1】:

您无法清除用户的剪贴板历史记录。但是,

你可以用其他东西替换他们的剪贴板

navigator.clipboard.writeText(" ");

或者您可以编写一个脚本,当他们尝试复制某些内容时它会停止它。

document.addEventListener('copy', function(e)
    e.preventDefault();
)

【讨论】:

【参考方案2】:

您无法清除剪贴板数据,因为没有相应的功能。

删除它的最佳方法是分配空值。

navigator.clipboard.writeText("");

【讨论】:

【参考方案3】:

  function clearData() 
    window.clipboardData.setData('text', '')
  

  function cldata() 
    if (clipboardData) 
      clipboardData.clearData();
    
  
  setInterval("cldata()", 1000);
<body ondragstart="return false;" onselectstart="return false;" oncontextmenu="return false;" onload="clearData();" onblur="clearData();">

  <h1>Example text</h1>
<input type="text">

【讨论】:

欢迎来到 SO。请为未来的读者解释您的答案。 哎呀,在过去的 6 到 8 年里,我还没有看到有人将一串代码传递给 setInterval。我希望您知道不建议这样做。【参考方案4】:

您可以放置​​以下内容:

$( document ).ready(function() 
    if (event.ctrlKey && event.keyCode == 67) 
        var inputFieldClear = document.createElement("input");
        inputFieldClear.setAttribute("value", "Insert Default Value Here");
        document.body.appendChild(inputFieldClear);
        inputFieldClear.select();
        document.execCommand('copy');
        inputFieldClear.remove();
        console.log("Attempting to Alter Clipboard")
);

这适用于 TamperMonkey 之类的东西 - 不确定它是否可以合并到网站源中。

希望对您有所帮助! :)

【讨论】:

【参考方案5】:

Yes, you can。基本技巧是检测用户何时按住 Control,并在页面上选择不同的文本。

【讨论】:

【参考方案6】:

你不能纯粹通过 JavaScript 来做到这一点。

剪贴板的JavaScript编辑被认为是security vulnerability(还有much more discussion on this)。

您可以通过使用 Flash 进行剪贴板访问与 JavaScript 交互的黑客来实现。

【讨论】:

但是可以使用async clipboard API 写入剪贴板。

以上是关于清除剪贴板以禁止未经授权的复制,插入消息?的主要内容,如果未能解决你的问题,请参考以下文章

清除办公剪贴板,使复制的数据不与其他办公程序共享

手机自动复制代码,请问这些代码是啥?

在Powerpoint中插入Excel内容。错误消息:剪贴板为空或包含可能无法粘贴在此处的数据

手机剪贴板经常出现奇怪的口令

如何在 PyQt 应用程序退出时禁用清除剪贴板?

CAD无法复制到剪贴板怎么解决?