在OnlyOffice中实现明水印

167 阅读3分钟

水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。在 Web 应用中,前端水印是一种常见的安全措施,用于保护内容的版权和防止非法复制。根据可见性可分为可见水印(明水印)和不可见水印(暗水印)。

基本概念

明水印: 通过在文本或图像上覆盖另一层图像或文字来实现的。这种水印会明显地出现在页面上,可以用来显示版权信息或其他相关信息。

暗水印: 在文本或图像中隐藏相关信息的一种技术。这种水印不会直接出现在页面上,只有在特殊的程序或工具下才能被检测到。暗水印通常用于保护敏感信息以及追踪网页内容的来源和版本。 ​

实现方式

​编辑

前端实现方式

1、html+css 直接覆盖在正文上 【优点】 实现最简单,基本不侵入业务代码【缺点】容易被删除

2、svg 或 canvas 绘制为图片,使用 div 容器覆盖在正文上 【优点】 效果有保证,基本不侵入业务代码 【缺点】 同样容易被删除

3、正文使用 canvas 绘制,水印是正文的一部分 【优点】 效果好,有一定自我保护效果 【缺点】 实现复杂,侵入业务代码

前两者需要做容器或水印内容的防删除或属性修改,保护水印层

第三种一定程度上增大了难度,无法直接删除水印(会同时删除正文)

保护手段

1、防调试(禁止打开开发人员工具,这个可以阻止一下初级用户)

2、MutationObserver 防止修改 dom(目前看效果相对较好,但也不是绝对,可以与上一条结合使用)

鉴于暗水印使用的场景较少,本文结合实际的产品来介绍明水印的实现方案。

基于OnlyOffice的 水印实现

       目前被很多团队使用的OnlyOffice,因为没有实现明水印,最近经常接到这类用户的咨询。借此介绍下我们团队的实现方案(开箱即用  文曲Office ),大概的思路如下:

1、根据文本内容、字体、字号、颜色、间距、旋转角度等参数,计算并绘制一个单一的 svg 元素

2、用这个 svg 转换为 base64 格式的图片,防止直接修改内容等

3、在页面正文区域遮盖一个容器,将这张图片放到这个容器内,使用背景平铺方式将水印充满容器

4、将水印容器做事件穿透,防止阻碍正文区鼠标事件响应

5、对这个水印容器做防调试保护

  防护的手段需要多条并用,但前端水印总归是无法做到 100% 可靠的,我们只能最大限度做保护。部分场景还可以做前后结合,在正文内容中添加水印。

具体效果如下图:

相关资源

另想下载OnlyOffice最新版本镜像,可访问: OnlyOffice9.0 

版本介绍: documentserver 中国版 

如果有WebOffice方面的问题或者OnlyOffice定制化需求的都可以加入Q Q群(183026419) 咨询.