You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Asp.net MVC Web应用中防止截图(含第三方工具如Snipping Tool)

ASP.NET MVC Web应用截图防护方案

前端浏览器层面防护(降低网页端截图风险)

  • 禁用右键与文本选择:阻止用户通过右键菜单截图或选中文本后截图,可在全局布局页(_Layout.cshtml)添加以下代码:

    // 禁用右键菜单
    document.addEventListener('contextmenu', e => e.preventDefault());
    // 禁用文本选择
    document.addEventListener('selectstart', e => e.preventDefault());
    
  • 添加全屏水印覆盖层:在页面顶层叠加半透明水印,即使被截图也会附带标识,增加滥用成本。用CSS实现全局水印:

    .global-watermark {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        pointer-events: none; /* 不干扰页面交互 */
        background: repeating-linear-gradient(
            45deg,
            rgba(0,0,0,0.08),
            rgba(0,0,0,0.08) 12px,
            rgba(0,0,0,0.03) 12px,
            rgba(0,0,0,0.03) 24px
        );
    }
    

    在布局页body末尾插入:<div class="global-watermark"></div>,也可通过Canvas动态生成含用户ID的文字水印,提升溯源性。

  • 窗口切换时隐藏敏感内容:监听页面可见性变化,当用户切换窗口/最小化时自动隐藏敏感区域:

    document.addEventListener('visibilitychange', () => {
        const sensitiveEle = document.querySelector('.sensitive-section');
        if (!sensitiveEle) return;
        sensitiveEle.style.display = document.hidden ? 'none' : 'block';
    });
    

    给敏感内容容器添加sensitive-section类即可生效。

系统级辅助防护(针对第三方截图工具)

Web应用无法直接控制客户端系统工具,需配合客户端配置或辅助程序:

  • 启用Windows DWM保护:开启桌面窗口管理器保护后,部分工具(如Snipping Tool)无法捕获受保护窗口。通过注册表配置:
    注册表路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
    添加DWORD值DisableDWM并设为0(启用保护),此操作需客户端系统权限。

  • 客户端辅助程序拦截:开发轻量级Windows客户端程序(C# WinForms/WPF),通过Windows API钩子(SetWindowsHookEx)捕获截图相关系统调用,或定期检测Snipping Tool等进程并提示用户关闭。

  • 限制访问场景:通过ASP.NET MVC的身份验证+设备指纹识别,仅允许合规设备访问敏感内容,同时记录访问日志,便于事后追溯。

注意:没有100%完美的防护方案(如用户可通过物理相机拍照),以上方案仅能降低截图滥用风险,需结合业务场景选择组合策略。

内容的提问来源于stack exchange,提问作者Raju Gaddam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:40:19