网页水印

网页水印可以帮助您保护企业网页的版权,防止网站信息泄露等。在使用网页水印时,您需要将SASE提供的网页水印SDK嵌入到业务服务器上,在发生信息泄露时,可以通过泄露的网页图片提取水印信息,溯源定位泄露人员。本文介绍如何使用网页水印功能。

工作原理

当前支持在网页上嵌入明水印和暗水印,大部分的信息泄露或版权纠纷等在溯源场景主要是依赖暗水印场景。

  • 如果嵌入的是明水印,您可以直接在网页上看到明水印信息。

  • 如果嵌入的是暗水印,您不能直接看到暗水印信息,需要在SASE控制台提取暗水印信息。

暗水印工作原理如下:

image

前提条件

已购买网页水印服务。具体信息,请参见数字水印计费概述

配置流程

image

网页集成明暗水印

操作准备

已存在一台基于X86架构的Linux服务器。该服务器用于部署网页水印SDK。

本文以Ubuntu 24.04 64位的服务器为例。

步骤一:下载网页水印SDK

  1. 登录办公安全平台控制台

  2. 在左侧导航栏,选择数字水印服务 > 嵌入服务

  3. 嵌入服务页面,单击网页水印操作下载SDK

    将网页水印压缩包下载到本地。当前只支持Java语言。

    下载的SDK压缩包中包含如下内容:

    • watermark-puretransparent-v1.0.9.jar:集成水印的SDK包,需要添加到Maven仓库。

    • pureTransparentDemo:水印的Demo,您可以通过Demo进行体验。

  4. 单击AK/SK信息列的图标,复制AK和SK信息并保存到本地。

步骤二:集成SDK

透明图水印生成SDK,可以根据用户输入参数,生成暗水印或透明水印图片。

  1. 添加jar包依赖(maven)。

    mvn install:install-file  -Dfile=watermark-puretransparent-v1.0.9.jar  -DgroupId=com.aliyun.security.sase -DartifactId=watermark-puretransparent  -Dversion=v1.0.9  -Dpackaging=jar
    <dependency>
        <groupId>com.aliyun.security.sase</groupId>
        <artifactId>watermark-puretransparent</artifactId>
        <version>v1.0.9</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>5.13.0</version>
    </dependency>
  2. 接口调用生成水印图片。

    1. 初始化AK、SK。

      /**
       * 初始化 ak sk
       * @param appKey 应用密钥Key
       * @param secret 应用密钥Secret
       * @param useLocalConfig 是否使用本地配置 0:远程配置(需要联网) 1:本地配置
       */
      WaterMarkPNGUtils.init(appKey, secret,useLocalConfig);
    2. 生成水印图片

      • 方式一:生成水印图片并输出到文件。

      ParamsFile paramsFile = new ParamsFile();
      //水印,10进制字符串,如“10012”,大小限制根据配置管控,无配置情况为1至4294967295
      paramsFile.setWatermarkbitsStr(watermarkbitsStr);
      //宽度
      paramsFile.setWidth(width);
      //高度
      paramsFile.setHeight(height);
      //透明度,取值范围为 [1, 255]。对于服务化场景建议统一设为 255,而后在渲染时控制透明图,从而降低服务端压力。
      paramsFile.setAlpha(alpha);
      //网页水印和app水印设为0,屏幕水印设为1
      paramsFile.setH_idx(h_idx);
      //缩放
      paramsFile.setScale(scale);
      //目标文件路径
      paramsFile.setDestFilePath(dest);
      /**
       * 生成水印文件
       * @param baseParam
       * @return
       * @throws PureTransparentException errorCode 异常码  errorMessage 异常信息 参考《错误码》
       */
      WaterMarkPNGUtils.waterMarkPngFile(paramsFile);
      • 方式二:生成水印图片到字节数组。

        //水印,10进制字符串,如“10012”,大小限制根据配置管控,无配置情况为1至4294967295
        paramsBytes.setWatermarkbitsStr(watermarkbitsStr);
        //宽度
        paramsBytes.setWidth(width);
        //高度
        paramsBytes.setHeight(height);
        //透明度,取值范围为 [1, 255]。对于服务化场景建议统一设为 255,而后在渲染时控制透明图,从而降低服务端压力。
        paramsBytes.setAlpha(alpha);
        //网页水印和app水印设为0,屏幕水印设为1
        paramsBytes.setH_idx(h_idx);
        //缩放
        paramsBytes.setScale(scale);
        /**
         * 生成水印文件
         * @param baseParam
         * @return
         * @throws PureTransparentException errorCode 异常码  errorMessage 异常信息 参考《错误码》
         */
        byte[] destFileBytes =  WaterMarkPNGUtils.waterMarkPngFile(paramsBytes);
        System.out.println("destFileBytes len "+destFileBytes.length);
        //水印,10进制字符串,如“10012”,大小限制根据配置管控,无配置情况为1至4294967295
        paramsFile.setWatermarkbitsStr(watermarkbitsStr);
        //宽度
        paramsFile.setWidth(width);
        //高度
        paramsFile.setHeight(height);
        //透明度,取值范围为 [1, 255]。对于服务化场景建议统一设为 255,而后在渲染时控制透明图,从而降低服务端压力。
        paramsFile.setAlpha(alpha);
        //网页水印和app水印设为0,屏幕水印设为1
        paramsFile.setH_idx(h_idx);
        //缩放
        paramsFile.setScale(scale);
        //目标文件路径
        paramsFile.setDestFilePath(dest);
        /**
         * 生成水印文件
         * @param baseParam
         * @return
         * @throws PureTransparentException errorCode 异常码  errorMessage 异常信息 参考《错误码》
         */
        WaterMarkPNGUtils.waterMarkPngFile(paramsFile);

步骤三:将透明水印底图嵌入到自研的网站

  1. 在HTML文件<head></head>引入水印文件(vm.min.js)。

    <script src="https://g.alicdn.com/csfe/yd-watermark-loader/1.1.4/wm.min.js"></script>
  2. 在HTML文件<body></body>末尾添加以下代码。

    添加完成后,HTML文件会添加您设置的明水印和暗水印。使用浏览器打开HTML文件,会显示明水印信息和不可见的暗水印信息。

    <script>
              // 调用下面的方法时会渲染明水印
            window.YD_WATERMARK.render({
                horizontalSpace: 300, // 明水印文案之间的水平间隔,单位为像素
                verticalSpace: 300, // 明水印文案之间的垂直间隔,单位为像素
                opacity: 1, // 明水印文案透明度, 取值范围[0, 1]
                rotateDegree: 30, //  旋转角度,取值范围[-180, 180]
                fontColor: "#ff0000", // RGB 格式的文案颜色
                rows: ["<账号名称>", "<邮箱>"], // 多行明水印文案
            })
    
            // 调用下面的方法时会渲染暗水印
            window.YD_WATERMARK.renderInvisible({
                imgSrc: "透明水印底图的URL", //您需要将获取到的透明水印底图上传到公网上,获取到对应的URL
                opacity: 8 // 暗水印透明度 取值范围[1-255],建议值8-10
            })
        </script>

水印功能函数错误码

错误码

描述

null_parameters

存在为空的参数

wrong_parameters

embed错误参数

jvm_error

embed Java虚拟机错误

jni_exception

JNI初始化出错(Office03版水印特有的错误),需检查POI引用是否冲突/出错、JDK版本、系统环境

wrong_fileFormat

文件格式错误

imgDecodeError

图片解码错误

imgSizeError

图片大小错误

embedException

嵌入过程出现异常

embedExceptionUnKnow

嵌入未知错误

invalid_carrier

不合法的载体或参数有误

embed_success

嵌入成功

extract_success

提取成功

extract_fail

提取失败

extract_id_exceed

提取

extract_exception

提取异常

ossp_error_code_success

SDK功能执行正常

ossp_error_code_invalid_param

SDK加载使用了无效参数

ossp_error_code_fail_to_download_config

SDK下载配置失败

ossp_error_code_fail_to_read_config

SDK读取配置失败

ossp_error_code_invalid_config

SDK无效配置

ossp_error_code_unauthorized_device

未授权设备

ossp_error_code_liscence_expired

许可证过期

ossp_error_code_config_mismatch

SDK配置不匹配

ossp_error_code_unauthorized_api

SDK功能接口未授权

ossp_error_code_invalid_session_id

SDK无效sessionId

ossp_error_code_api_not_implemented

SDK调用接口未实现

ossp_error_code_unknown

SDK未知错误

提取暗水印信息

已获取嵌入暗水印信息的外泄网站图片。

步骤一:创建提取任务前提条件

  1. 登录办公安全平台控制台

  2. 在左侧导航栏,选择数字水印服务 > 提取服务

  3. 单击创建提取任务,在创建提取服务面板,参考如下说明配置提取文件。

    配置项

    说明

    水印版本

    根据购买的水印版本选择。

    水印类型

    选择网页水印。

    嵌入水印信息位宽

    设置水印信息的位宽,位宽需要与透明水印底图的SDK位宽(默认为32位)保持一致。

    上传待提取水印文件

    根据界面提示,上传获取到的泄露文件。

  4. 单击确定

    创建成功后,提取服务页面会显示创建的任务信息。

步骤二:查看提取结果

  1. 登录办公安全平台控制台

  2. 在左侧导航栏,选择数字水印服务 > 提取服务

  3. 单击创建提取任务,在创建提取服务面板,参考如下说明配置提取文件。

    配置项

    说明

    水印版本

    根据购买的水印版本选择。

    水印类型

    选择网页水印。

    嵌入水印信息位宽

    设置水印信息的位宽,位宽需要与透明水印底图的SDK位宽(默认为32位)保持一致。

    上传待提取水印文件

    根据界面提示,上传获取到的泄露文件。

  4. 单击确定

    创建成功后,会在提取服务页面显示创建的任务信息。

溯源定位泄露人员

  1. 提取服务页面,单击提取信息展示

  2. 在展开的信息中,您可以提取到暗水印原文(十进制数字)。

    例如,您是123456,映射表中123456对应的是张三,则定位出泄露人员是员工张三,溯源定位泄露人员。

image

相关文档