移动端水印防截图真的有效吗?
我在做公司内部的保密页面,加了 canvas 水印,但发现用户一截图还是能完整保存内容,根本拦不住啊。
我试过用 pointer-events: none 防止选中,也监听了 visibilitychange 事件隐藏敏感信息,但截图工具绕过这些完全没压力。有没有真正有效的前端方案?
目前水印是这样加的:
const watermark = document.createElement('canvas');
watermark.width = 200;
watermark.height = 100;
const ctx = watermark.getContext('2d');
ctx.font = '16px Arial';
ctx.fillStyle = 'rgba(0,0,0,0.1)';
ctx.fillText('机密', 10, 30);
document.body.style.background = <code>url(${watermark.toDataURL()})</code>;
但可以恶心一下截图的人,提高一点门槛:
CSS 层面能做的事
JS 层面能恶心人的
你的水印可以这样改进
说点实际的
这些手段只能防小白,真要保密的东西别放前端。服务端做权限控制,敏感数据不返回给无权用户,或者用 SSE/WebSocket 实时推送,显示完就从 DOM 删掉。
说到底,截图是系统权限,前端管不了。你能做的就是提高破解成本,以及别把真正敏感的东西裸放在页面上。