V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yeshenyue
V2EX  ›  程序员

在线文档需要防止被截图,防止下载,但是能直接打印,前后端需要怎么设计?

  •  1
     
  •   yeshenyue · 51 天前 · 6741 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。

    给用户的开发的功能就是在线文档能预览电子版和直接打印,但要防止用户截屏和保存电子版,前端后端怎么设计文档格式,怎么调用打印功能?就指导思路

    104 条回复    2021-10-11 17:43:09 +08:00
    1  2  
    kkocdko
        1
    kkocdko   51 天前 via Android   ❤️ 3
    不可能,打印的时候可以选虚拟打印机
    Blanke
        2
    Blanke   51 天前
    不可能,浏览器打印的时候直接可以保存为 pdf
    janus77
        3
    janus77   51 天前   ❤️ 2
    那我打印出来再拍照算什么?
    paopjian
        4
    paopjian   51 天前
    打印和截图的边界在哪里?
    cuixiao603
        5
    cuixiao603   51 天前
    又是老板提的需求吗
    littlewing
        6
    littlewing   51 天前   ❤️ 66
    离职
    gouflv
        7
    gouflv   51 天前 via iPhone
    上客户端
    ioriyameng
        8
    ioriyameng   51 天前
    无解。
    lakehylia
        9
    lakehylia   51 天前   ❤️ 1
    提桶跑路
    minamike
        10
    minamike   51 天前   ❤️ 4
    建议直接打印好寄给用户
    MHPSY
        11
    MHPSY   51 天前
    虚拟打印机好像没办法防止
    DogeFlyKite
        12
    DogeFlyKite   51 天前   ❤️ 1
    单是防止用户截屏就做不到吧,截图的方式千千万,就算上客户端也是没有办法完全避免的
    tabris17
        13
    tabris17   51 天前
    不如想想如何辱骂提出这个需求的产品
    yeshenyue
        14
    yeshenyue   51 天前
    @cuixiao603 是啊
    tabris17
        15
    tabris17   51 天前
    @DogeFlyKite 防止静态截屏是有办法的,就是动态化逐行显示,类似 CRT 显示器逐行扫描的原理
    swordmaster
        16
    swordmaster   51 天前   ❤️ 1
    哈哈,同一个世界,同一个老板,要求我们给 CRM 系统增加防截屏功能。
    debuggerx
        17
    debuggerx   51 天前   ❤️ 2
    使用前强制用户同意协议,一旦发现用户有擅自截图和下载的行为,直接走法务部,需要赔钱 1w RMB,然后写一些监控埋点和隐形签名——这样 lz 不用多久就会升职加薪、当上总经理、出任 CEO 、迎娶白富美、走上人生巅峰[狗头]
    DogeFlyKite
        18
    DogeFlyKite   51 天前   ❤️ 1
    举一个无解的例子,在 iOS 上无法阻止用户截屏,除非说你判断用户是在 iOS 的浏览器上打开的就直接不展示,只要你展示了就无法阻止用户截屏。
    做成 App 的话可以知道用户是否截屏,但是这个也是截屏完成后才通知的,所以只能知道截屏了,无法在截屏前做一些其他处理
    sexoutsex2011
        19
    sexoutsex2011   51 天前
    截图防不了,打印 PDF 、另存为 mhtml 什么的还是可以防的,效果可以参考下 Google Docs 和 飞书文档之类的,不给编辑及下载权限。
    DogeFlyKite
        20
    DogeFlyKite   51 天前
    @tabris17 这样的话用户体验也是有问题的吧
    masterclock
        21
    masterclock   51 天前
    有一些卖打印机的有类似功能
    预览显示的是带水印、低清晰度的文档,直接打印出来也是带水印、低清晰度的
    要得到没有水印、高清的文档,需要用它的打印机、打印服务器打印,是个专用硬件,稍稍增加了破解难度
    abc0123xyz
        22
    abc0123xyz   51 天前
    我直接拍屏
    Kinnice
        23
    Kinnice   51 天前
    这个简单,需要用户购买你们专门定制的打印机和显示器,只有连接这个打印机和显示器才可以打印和预览,其他未授权的不允许。
    sexoutsex2011
        24
    sexoutsex2011   51 天前
    @sexoutsex2011 #19 忽略我,审错题了
    yuhangch
        25
    yuhangch   51 天前
    用户名贴上追责?
    abc0123xyz
        26
    abc0123xyz   51 天前   ❤️ 2
    建议机器放到专门的房间,必需全裸进去,而且金属检测仪不能响,信号屏蔽器打开,在找两个保安一人牵条狗监视,有任何违规动作,就放狗去咬,然后拉去打靶。
    这样应该就行了
    abc0123xyz
        27
    abc0123xyz   51 天前
    @abc0123xyz #26 必须
    rioshikelong121
        28
    rioshikelong121   51 天前   ❤️ 2
    电子水印 事后追责
    tabris17
        29
    tabris17   51 天前
    @DogeFlyKite 帧率足够应该能行
    sleepwalker
        30
    sleepwalker   51 天前 via iPhone
    之前看 Netflix 的时候想截图,但是发现调用截图工具后页面黑屏了,不知道怎么实现的。
    riggzh
        31
    riggzh   51 天前
    我直接采集卡截图,怎么防。
    xiongshengyao
        32
    xiongshengyao   51 天前
    方案 A:
    1. 要求员工入职签订不平等的保密协议
    2. 每个员工进入平台登陆账号后,背景显示只属于该员工的隐藏水印
    3. 泄密后根据水印查到个人,追究刑事责任

    方案 B:
    1. 配备专门的办公用电脑,无法上外网,无法插 U 盘,重启后恢复系统
    xiongshengyao
        33
    xiongshengyao   51 天前
    @xiongshengyao 方案 B 用的很广,基本上工厂里的电脑都是这样的
    xingyuc
        35
    xingyuc   51 天前
    前段时间有类似需求,找到了这个,但需求又不做了,你要不要试试: https://github.com/saucxs/watermark-dom
    dzyou2007
        36
    dzyou2007   51 天前 via Android
    @DogeFlyKite #12 就算能禁止截图,那搞最原始的就好了。拍照,再不行手抄。
    codehz
        37
    codehz   51 天前
    @sleepwalker 是 DRM 但是可以开 rdp 饶过限制(
    anxn
        38
    anxn   51 天前 via Android
    打印好邮寄过去
    devon
        39
    devon   51 天前 via iPhone
    专用加密硬件键盘,只给两个键,预览 /打印。只有检测并验证了就个键盘,才让进系统。
    snail00
        40
    snail00   51 天前
    完全防止做不到
    1. 增加一些简单门槛, 防小白
    2. 增加访问者的指纹, 可追溯
    这两步一般使用就够了
    sarices
        41
    sarices   51 天前
    只能物理防止了,看的时候先过安检,无任何摄像头设备才能进去看,然后看的时候一行行显示,显示几行把上面几行隐藏
    lbp0200
        42
    lbp0200   51 天前
    使用量子物理的知识,就可以做到
    参考双缝干涉实验,B 站上就有介绍
    LudwigWS
        43
    LudwigWS   51 天前 via iPhone
    下次开始研究如何防止在虚拟机截屏,如何防止物理拍摄了,答案就是要求实时开启摄像头对准用户和屏幕拍摄,有专门运营人员监控
    dallaslu
        44
    dallaslu   51 天前
    自己做打印机,封闭系统;

    禁止添加虚拟打印机和截图功能;

    网站只能用这种专用的打印机才能访问;

    打印机仅支持特制光敏纸,拍照或扫描时字迹自动销毁;

    打印时自动增加水印:「扫描无效」;

    打印时自动为纸张添加白磷涂层,做到物理上的阅后即焚;

    增加摄像头,一旦摄像头被遮挡或识别到有相机、手机拍照,或者有镜子试图绕过拍照限制,则打印机自动爆炸销毁;

    若有人长时间盯住屏幕,则自动闪烁,避免人肉照相机;

    ……
    faustina2018
        45
    faustina2018   51 天前
    去把用户键盘上的 printscreen 按键抠掉吧
    只能这样了
    yeshenyue
        46
    yeshenyue   51 天前
    @dallaslu 你要是产品经理估计会火。。。
    ZField
        47
    ZField   51 天前
    很明显是一个不合理的需求,辩不过就快跑!
    chaleaoch
        48
    chaleaoch   51 天前
    无法截图这个已经超过了浏览器的能力了吧?
    cheng6563
        49
    cheng6563   51 天前
    交错显示呗
    xd199153
        50
    xd199153   51 天前
    防止打印没法的,只有加数字指纹好溯源。
    0o0o0o0
        51
    0o0o0o0   51 天前
    截图肯定是不可能阻止的,只要是能看见的,就肯定能被捕获。
    可以试一试添加遮罩,比如棋盘遮罩或者颜色混合的遮罩或者加入噪声等,让用户无法获取高清原图。
    nbndco
        52
    nbndco   51 天前
    可以的,iOS,Android,macOS 都可以直接用官方 API 屏蔽截图。
    nbndco
        53
    nbndco   51 天前
    @DogeFlyKite 可以的,iOS,Android,macOS 都可以直接用官方 API 屏蔽截图。
    0o0o0o0
        54
    0o0o0o0   51 天前
    不过如果是打印,那基本上没办法,你总是要把数据传到打印机的,所以说完全没有意义。
    Jface
        55
    Jface   51 天前
    人为控制吧,安排个人专门负责这个任务
    youngce
        56
    youngce   51 天前
    请问贵司的用户群体是盲人吗
    yolee599
        57
    yolee599   51 天前
    打印的时候直接选择虚拟打印机就能输出 pdf 了
    TomatoYuyuko
        58
    TomatoYuyuko   51 天前
    设计一套光学摩尔纹遮罩呗
    zjsxwc
        59
    zjsxwc   51 天前 via Android
    五彩缤纷的黑?
    zjsxwc
        60
    zjsxwc   51 天前 via Android
    楼主的需求应该询问专业产品经理,而不是问我们程序员
    zjuster
        61
    zjuster   51 天前
    @zjsxwc 怎么实现我不管,明天上线
    alfchin
        62
    alfchin   51 天前 via iPhone
    @DogeFlyKite 防截屏做得到。每一帧显示图片的一部分,每秒 24 帧人眼无法察觉但是截图无效
    luwill
        63
    luwill   51 天前
    低端:拍照
    高端:视频卡
    netnr
        64
    netnr   51 天前 via Android
    打开文档触发:键盘截屏键键帽弹射起飞
    liuidetmks
        65
    liuidetmks   51 天前   ❤️ 4
    找佳能定制一个打印机型号,单独开发驱动程序,定义一套自己的描述语言 ,只有你的程序能预览,能打印。
    年费 vip 会员免费送,增加安全性的同时,还能增加用户粘性,送这么好的打印机放家里可不能荒废了。
    什么?你说成本兜不住,别和你开玩笑?
    是你先开玩笑的。
    jiayong2793
        66
    jiayong2793   51 天前
    只要是能被显示器显示出来的,理论上都可以截图、打印,甚至拍照;
    这是脑残才想出来的需求;
    如果是防止被盗用建议打上水印,并将 pdf 全部二进制化;
    如果是防止下载传播的,在线预览的内容全部图片化,水印印上用户姓名,谁传播出去的一目了然;
    hst001
        67
    hst001   51 天前 via Android
    可以的,开个网吧,专门使用这个文档系统,使用的时间派产品经理盯着用户,代码不用改。
    leimao
        68
    leimao   51 天前
    从入门到放弃,你是完全忽视操作系统开发 app 的吗?
    James369
        69
    James369   50 天前
    虽然这个需求很变态,但是也是有办法解决的。
    开发专门的显示系统(专门显示器+专门眼镜+用户需要服用量身定制药物才能看到),这样其它人都看不到,且无法截屏 /保存等等。
    那么,不仅可以赚软件的钱,还可以赚硬件的钱,以及药品的钱,一举三得。
    darknoll
        70
    darknoll   50 天前
    提出这种需求的基本上啥都不懂的,直接离职即可。
    CivAx
        71
    CivAx   50 天前   ❤️ 2
    只要有输出,就能被捕获,这应该是每一个 IT 人都懂的道理。

    一直以来对于内容保护基本都围绕输出渠道进行加密并去 C 端解密,包括但不限于特殊的 C 端播放器、流媒体分片传输+动态秘钥、特殊色彩 /图像格式、特殊协议 /硬件识别( DRM )。

    就算财大气粗的流媒体服务商对下载( Web-DL )做了百般防护,也逃不掉被录屏( Web-Rip )的命运,何况你一个简简单单的在线文档呢?

    防是防不住的,你的出发点只能够是 “我默认用户已经绕过我的君子限制拿到了我的文档”,然后在此之上去考虑后续追责的方案设计。甚至还可以钓鱼,明面上不限制截图,但是在客户使用前予以醒目警告禁止截图,一旦截图触发 activator 就后台隐秘记录一次。
    MiketsuSmasher
        72
    MiketsuSmasher   50 天前
    代码和人,有一个能跑就行(
    MiketsuSmasher
        73
    MiketsuSmasher   50 天前
    不好意思,上一条我的回复是我发错地方了
    djoiwhud
        74
    djoiwhud   50 天前 via Android
    这是个自欺欺人的功能。欺负人家的手机不能拍照么?
    wdlth
        75
    wdlth   50 天前
    你想看连蓝光、HDCP 、WideVine 等等都被破解了,你有多少技术和精力去和这些巨头相比……
    yidinghe
        76
    yidinghe   50 天前 via Android
    如今谁还截图啊,都是直接拿手机拍了
    billlee
        77
    billlee   50 天前
    不可能,商用打印机驱动输出的格式就是 PostScript, 相当于 PDF
    c0xt30a
        78
    c0xt30a   50 天前
    @alfchin 同一个画面多截图几次求平均就可以了吧?
    Mac
        79
    Mac   50 天前
    我老婆她们银行有个内部桌面系统,类似沙盒,可以在外网登陆,你在这个沙盒里保存的所有文件都是加密的,只能在沙盒环境下正常打开,发到外部环境就是一堆乱码。也就只能做到这步,对着屏幕拍照片是拦不住的。
    datou
        80
    datou   50 天前
    @sleepwalker 用 edge 可以绕过 netflix 截图限制
    ysc3839
        81
    ysc3839   50 天前
    @sleepwalker #30 那是浏览器提供的 DRM 功能。
    liuzhedash
        82
    liuzhedash   50 天前
    最接近的是各大厂商的云桌面,相当于远程访问一台无法链接外设的 pc,但是截屏和拍照是无法制止的
    dingyx99
        83
    dingyx99   50 天前
    能打印就没法限制下载,现在各家都自带了输出到 PDF
    sggggy
        84
    sggggy   50 天前
    @luwill 视频卡采集-》 AI 文字识别-〉转写—》各大平台推流,一气呵成。
    IvanLi127
        85
    IvanLi127   50 天前 via Android
    快进到开发一体终端设备。
    datoo
        86
    datoo   50 天前
    这个简单。取消在线文档,直接给客户发纸质文档不就行了
    wanguorui123
        87
    wanguorui123   50 天前
    防君子不防小人
    deszon
        88
    deszon   50 天前
    限制不能截屏,需要看一下怎么理解不能截屏,如果仅仅是不允许使用系统截屏,这个可以搞;
    不能保存电子版就有点扯了,就算是程序实现了,但是打印出来,很快就识别出来,很多 OCR 连格式都能识别完成
    Osk
        89
    Osk   50 天前
    防止截图: 就算你 c 端程序阻止用户截图, 但只要价值足够, 一个 hdmi 采集卡也就 400 不到, 效果很好, 硬件外挂如何破解呢? hdcp 早已破解, 采集卡也能复制显示器的名称, 基本上检测不到啊...

    防止电子版: 打印后, 直接扫描一遍, 存成 pdf 美滋滋.



    看你们希望防住哪些用户和资料的价值了:
    通过法律手段: eula 加黑让用户确认泄露风险, 吓住部分用户.
    加上水印, 前端 /c 端可以加上明水印和盲水印. 希望截图 /采集卡的用户好自为之.
    web 端限制过多,建议上客户端:
    - 调用 api 阻止截图和录制;
    - 打印前检查打印机名称, 驱动, 端口等信息, 尽量避免被虚拟打印. (反面教材: 我见过某系统拒绝虚拟打印机, 然后把打印机名称从 Adobe pdf 改成 hp xxxx, 绕过了...)


    至于打印后扫描, 这个还真不知道怎么防, 只能加明水印了, 盲水印是难以抗住这种情况的.
    Huelse
        90
    Huelse   50 天前
    看看百度文库,豆丁是怎么做的,顶多是只提供部分预览
    tediorelee
        91
    tediorelee   50 天前
    @datou 我用 edge 看 nf 还是不能截图呢,一截就是黑的
    nil333
        92
    nil333   50 天前
    但凡你敢让我看到的,我就有办法记录下来。
    jasy
        93
    jasy   50 天前
    能让我看到我还保存不了下来?这不可能的事
    retrocode
        94
    retrocode   50 天前
    可以参考 百度文库 预留使用 canvas 实现 至少对非登录用户只展示部分 加上水印 能提高一下泄露风险,但是完全防止是不可能的, 禁止截屏感觉没什么意义,你防不住手机直接拍的,不如换个思路,况且浏览器也没那么高的权限
    kingfalse
        95
    kingfalse   49 天前 via Android
    你跟老板说想屁吃呢
    xuanbg
        96
    xuanbg   49 天前
    专用电脑
    SmiteChow
        97
    SmiteChow   49 天前
    能做,但需要搞定脑机接口,图像直接加密转化为脑电波,在脑中解密反馈给神经系统。

    搞定前面的,打印就简单了,直接打印二维码,还是复用脑机接口。
    hack
        98
    hack   49 天前
    xvast ?
    yeshenyue
        99
    yeshenyue   49 天前
    @Osk 说的有道理,哎
    SmiteChow
        100
    SmiteChow   49 天前
    总体来讲这个需求在可理解范围内,我见过不可理解的,需求不允许任何形式的泄露,什么文字描述,灵魂画手复刻都不允许。
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2582 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 14:38 · PVG 22:38 · LAX 06:38 · JFK 09:38
    ♥ Do have faith in what you're doing.