Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Watermark/水印] 之前提到的防删除,确实解决了部分防删除的问题,但是并没有真正修复。 #2559

Closed
1 task done
kwooshung opened this issue Oct 19, 2023 · 3 comments
Assignees
Labels
wontfix This will not be worked on

Comments

@kwooshung
Copy link

kwooshung commented Oct 19, 2023

tdesign-react 版本

最新版本

重现链接

https://tdesign.tencent.com/react/components/watermark

重现步骤

只需要通过调试工具或js,增加一个style,里面只需要这么写就能隐藏,我知道这个实现起来有点难,我不知道是不是我没有想到更好的办法。

我只是随便增加了一个外部的方式就可以实现隐藏(当然选择器.t-watermark div:last-child这样写也是一样的效果)。

image

更极端点儿的方式,使用循环什么的一次一次隐藏。

只在水印视觉元素.t-watermark > div:last-child上做各种属性的防删除、防修改意义就不大了。

期望结果

首先感谢,TDesign对之前提出的issuse的重视;

Tasks

就如,我所说的重现步骤中说的那样,如果其他的防护不做加强,这水印,在技术人手里就形同摆设。虽然我们不可能把水印防护做到滴水不漏,但是我觉的,尽可能防护还是很重要的。无论是合同,会员才能去除水印的功能之类的,这些水印就像摆设了。

重现步骤中所说的大概就这几种隐藏方式,除非用户自己针对性的对chrome等开源浏览器二次开发,这种在我的认知中无法做到防护,但是我说的这几种方式,还是可以做到的,这些无外乎就这常见的几种方式:

1、css控制父级或相邻元素,如:dispaly隐藏、高度为0,visibility:不可见、透明度为0、margin/padding/定位/等撑出屏幕;
2、频繁使用js隐藏某些元素,死循环调用之类的,重复设置相关css属性
3、二次开发浏览器,这个对于隐藏水印的用户来说,操作成本高,所以可以不用考虑这个功能的处理。

其实,就在刚刚我想到了一个终极思路,概念在我脑子还是个雏形:

需要考虑的一些东西很多啦,但是却避免了上述的麻烦了,同时增加了新的麻烦。思路简单,但是代码估计很复杂;大概思路就是:
水印和内容都是在canvas中,也按照样式内容生成,就是说和html表现的是一模一样的视觉效果(就光这一个,代码估计就很复杂),一个是样式的问题,一个是窗口缩放的问题(特别是缩放后文字排版的问题)

如果考虑canvas的方式实现,可以考虑加上一个类似static的属性,就是静态的。具体意思就是,如果用户内容不变,就是内容不变的情况下,可能免去很多复杂的计算,具体我也不太好描述,说到这里脑子有点乱,想到了很多,真正在这里复述的时候,有点讲不出来了。

大概就是这样;

实际结果

我猜测,TDesign团队,可能暂时不考虑canvas方面的防篡改功能的实现;所以我认为,也要把上面提到的那两点实现了吧?不然水印就是形同摆设。

其他同类产品的issues
arco-design/arco-design#2263
ant-design/ant-design#45427

@github-actions
Copy link
Contributor

👋 @kwooshung,感谢给 TDesign 提出了 issue。
请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。

@carolin913
Copy link
Collaborator

感谢@kwooshung的建议,其实单纯的在前端页面上加水印总是可以通过一些骚操作来跳过的,所谓防外行不防内行,想在前端浏览器页面做更周到的防护措施确实有些成本过高了,建议对安全防护性要求较高的场景可以考虑暗水印,或者如果资源为某个用户独有也可以考虑后端服务器加水印来标示资源的归属人

@carolin913 carolin913 added wontfix This will not be worked on and removed enhancement New feature or request labels Oct 20, 2023
@kwooshung
Copy link
Author

确实确实,前端确实不容易做好这块防护。非常感谢 @carolin913 的重视和回复。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

4 participants