一、JavaScript禁用右键与快捷键
通过拦截键盘事件和鼠标操作实现基础防护:
document.addEventListener('contextmenu', e => e.preventDefault());
document.addEventListener('keydown', e => {
if (e.ctrlKey && (e.key === 'c' || e.key === 'v' || e.key === 'x')) {
e.preventDefault();
alert('内容保护已启用');
}
});
注意事项:此方法仅防普通用户,无法阻止开发者工具操作。建议配合其他方案使用。
二、CSS内容不可选择技术
通过样式表禁用文本选择功能:
.protected-content {
user-select: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
}
进阶方案可添加伪元素覆盖:
.protected-container::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999;
}
三、动态内容加载与验证
结合后端技术的深度防护方案:
- 分块加载技术:通过AJAX按需加载文本片段
- Canvas渲染:将关键内容转为图片显示
- 水印追踪:植入隐形水印检测泄露源
PHP示例(动态内容混淆):
function obfuscateContent($text) {
$output = "";
foreach (str_split($text) as $char) {
$output .= "&" . ord($char) . ";";
}
return $output;
}
实施建议
- 医疗/法律等敏感领域建议采用方案二+方案三组合
- 博客类网站可使用方案一+CSS防护
- 重要文档推荐添加PDF预览+动态水印
根据W3C标准,user-select属性已被主流浏览器广泛支持。
评论