10 maneiras de criptografar e impedir o download de cursos de treinamento internos e cursos pagos em plataformas educacionais online

10 maneiras de criptografar e impedir o download de cursos de treinamento internos e cursos pagos em plataformas educacionais online:

Exemplo de demonstração: Vídeo do curso - Lição 1 Cláusulas Adverbiais, aplicação de demonstração VRM

Cursos de treinamento internos e cursos pagos em plataformas de educação online, como eles criptografam seus cursos em vídeo? Compilamos 10 ideias para sua referência:

1. Criptografia de vídeo fora de ordem fragmentada VRM

A tecnologia de codificação distribuída é usada para fatiar fisicamente os arquivos de vídeo, e cada vídeo é criptografado com uma mistura de vários algoritmos. Ao mesmo tempo, combinado com um livro de códigos desenvolvido de forma independente, os dados principais são misturados fora de ordem e os arquivos de vídeo são criptografados. no nível mais alto. Desta forma, o criptografado Mesmo que o conteúdo do vídeo seja baixado, ele não pode ser redistribuído maliciosamente, tornando duas vezes mais difícil quebrar o vídeo.

2.Criptografia de vídeo de link completo HTML5

A criptografia H5 comum no mercado adota o mecanismo padrão de proteção de vídeo Apple HLS Encryption.Com base nisso, realizamos otimização profunda, criptografamos profundamente a chave e, simultaneamente, alcançamos criptografia dupla do reprodutor de vídeo e dos arquivos de dados de vídeo para formar um terminal A proteção completa de segurança de vídeo de link completo significa que mesmo que o arquivo de vídeo seja roubado, outros aplicativos não poderão reproduzi-lo, tornando o vídeo mais seguro.

 Exemplo do nosso método de chamada criptografada:

<div id="player"></div>
<script src="//player.polyv.net/script/player.js"></script>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',   
    playsafe:'81814fed-bdd0-4506-bec1-ebc8093148c5-hfevwsfxcsbcocx', 
  //playsafeUrl:'https://myDomain.com/token', // 业务方自定义的获取播放凭证接口URL,与playsafe参数二选一
    ts:'1568131545000',
    sign:'88313661ba7ded642c7b557b0a364b4b'
});

//切换加密视频时,需要重新获取播放凭证。如果初始化播放器时使用了playsafeUrl参数,则播放器会自动获取新的凭证,无需传playsafe参数。
player.changeVid({
  vid: '88083abbf5bcf1356e05d39666be527a_9', //需要切换的视频vid
  playsafe: '81814fed-bdd0-4506-bec1-ebc8093148c6-hfevwsfxcsbcocx', //新获取的playsafe token
  sign: '88313661ba7ded642c7b557b0a364b4c', //新获取的sign和ts参数
  ts: '1568131545001'
});
</script>

Antes de reproduzir vídeos criptografados em uma página da web, você precisa acessar a interface de verificação de autorização do servidor da própria empresa (você pode adicionar aqui a lógica de verificação de autorização da sua própria empresa, como fazer login, comprar cursos, etc. É recomendado usar HTTPS). Se a reprodução for permitida no negócio, as credenciais de reprodução são obtidas criando uma interface Playsafe Token (ou os parâmetros sign e ts são gerados no lado do servidor) e retornadas ao web player.

Exemplo de código para geração de credenciais de reprodução no servidor:

// 接口中应附带自有业务的授权验证逻辑,如判断是否登录、是否购买课程等

// 以下为生成播放凭证的代码示例
function get_client_ip() {
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
  } else {
      $ipaddress = $_SERVER['REMOTE_ADDR'];
  }
    return $ipaddress;
}

$userId = 'your userId';       // 保利威点播账号的userId
$secretkey = 'your secretkey';     // 保利威点播账号的secretkey
$videoId = '88083abbf5bcf1356e05d39666be527a_8';  // 视频vid
$ts = time() * 1000;      // 时间戳
$viewerIp = get_client_ip();  // 观众ip
$viewerId = '12345';      // 观众id
$viewerName = 'testUser';  // 观众昵称, 若值为中文需要urlencode('张三')
$extraParams = 'HTML5';  // 自定义扩展参数
$disposable = false // true 表示 token 仅一次有效。false 则表示在有效期内可以多次验证。默认为 false。

/* 将参数 $userId、$secretkey、$videoId、$ts、$viewerIp、$viewerIp、$viewerId、$viewerName、$extraParams按照ASCKII升序 key + value + key + value ... +value 拼接
*/
$concated =  'extraParams'.$extraParams.'ts'.$ts.'userId'.$userId.'videoId'.$videoId.'viewerId'.$viewerId.'viewerIp'.$viewerIp.'viewerName'.$viewerName;
// 首尾加上secretkey值
$plain = $secretkey.$concated.$secretkey;
// 取大写MD5
$sign = strtoupper(md5($plain));

// 然后将下列参数用post请求  https://hls.videocc.net/service/v1/token 获取 token
$url = 'https://hls.videocc.net/service/v1/token';
$data = array('userId' => $userId, 'videoId' => $videoId, 'ts' => $ts, 'viewerIp' => $viewerIp, 'viewerName' => $viewerName, 'extraParams' => $extraParams, 'viewerId' => $viewerId, 'sign' => $sign);
$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

// 获取接口返回结果中的token值, 并传给播放器播放加密视频
$token = json_decode($result)->data->token;
echo $token;

Código Java SpringMvc:

@ResponseBody
@RequestMapping("/playerSafe")
public String playerSafe(HttpServletRequest request) {
    String userId = "your userId";       // 保利威点播账号的userId
    String secretkey = "your secretkey";     // 保利威点播账号的secretkey
    String videoId = "88083abbf5bcf1356e05d39666be527a_8";  // 视频vid
    long ts = System.currentTimeMillis();      // 时间戳
    String viewerIp = getClientIp(request);  // 观众ip
    String viewerId = "12345";      // 观众id
    String viewerName = "testUser";  // 观众昵称, 若值为中文需要urlencode('张三')
    String extraParams = "HTML5";  // 自定义扩展参数
    boolean disposable = false; // true 表示 token 仅一次有效。false 则表示在有效期内可以多次验证。默认为 false。

    /* 将参数 userId、secretkey、videoId、ts、viewerIp、viewerIp、viewerId、viewerName、extraParams按照ASCKII升序 key + value + key + value ... +value 拼接
     */
    String concated = "extraParams" + extraParams + "ts" + ts + "userId" + userId + "videoId" + videoId + "viewerId" + viewerId + "viewerIp" + viewerIp + "viewerName" + viewerName;
    // 首尾加上secretkey值
    String plain = secretkey + concated + secretkey;
    // 取大写MD5,可自行选择md5库
    String sign = md5Hex(plain).toUpperCase();

    // 然后将下列参数用post请求  https://hls.videocc.net/service/v1/token 获取 token
    String url = "https://hls.videocc.net/service/v1/token";

    Map<String, String> params = new HashMap<>();
    params.put("userId", userId);
    params.put("videoId", videoId);
    params.put("ts", String.valueOf(ts));
    params.put("viewerIp", viewerIp);
    params.put("viewerName", viewerName);
    params.put("extraParams", extraParams);
    params.put("viewerId", viewerId);
    params.put("sign", sign);
    // 可自行选择http客户端
    String response = HttpClientUtil.getInstance().sendHttpPost(url, params);

    try {
        //解析json
        ObjectMapper objectMapper = new ObjectMapper();
        TokenResponse tokenResponse = objectMapper.readValue(response, TokenResponse.class);
        // 响应代码,200为成功,403为ts过期或签名错误,400为参数错误(例如缺少 userId 或 videoId)
        if (tokenResponse.getCode() == 200) {
            Map data = (Map) tokenResponse.getData();
            return data.get("token").toString();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "";
}
static class TokenResponse {
    int code;
    String status;
    String message;
    Object data;
    //省略getter、setter...
}
public String getClientIp(HttpServletRequest request) {
    String ip = request.getHeader("x-forwarded-for");
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("Proxy-Client-IP");
    }
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("WL-Proxy-Client-IP");
    }
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
    }
    return ip;
}

3. Marcador de ID do usuário

Defina o ID do usuário I, número de telefone ou outras informações para serem executadas irregularmente no vídeo (para rastrear piratas). A função de letreiro de ID refere-se à configuração do conteúdo do texto (geralmente as informações de identificação do espectador) para rolar irregularmente no vídeo para alertar os piratas e obter o efeito de proteção de direitos autorais do vídeo. No exemplo, o ID do usuário e o número de telefone são exibidos.

4. Marca d'água dinâmica digital

O ID do usuário, número de telefone ou outro conteúdo informativo é exibido no vídeo na forma de uma marca d'água dinâmica, de modo que a marca d'água apareça irregularmente no vídeo, o que pode rastrear a identidade do gravador de tela e ter um forte efeito dissuasor na extração comportamento.

5. Gravação anti-tela do navegador

Através do monitoramento em tempo real do player, se for detectado que o vídeo está no estado de gravação de tela ou a pequena janela está aguardando a gravação da tela, o vídeo irá parar imediatamente de ser reproduzido, uma mensagem de erro será exibida e o vídeo não poderá continuar a jogar.

6. Marca d'água de vídeo (LOGOTIPO corporativo)

Adicione uma marca d'água de vídeo específica da empresa ao vídeo para incorporar as informações de direitos autorais da empresa no vídeo, evitando que piratas roubem direitos autorais e proteja a propriedade intelectual da empresa. Após o upload do vídeo, a marca d'água do ícone do logotipo da empresa será adicionada automaticamente ao canto superior direito/canto inferior direito do vídeo.

7. Lista de permissões de nomes de domínio OVP anti-leeching

Use a tecnologia anti-leeching OVP para realizar a reprodução de sites designados, comumente conhecida como lista negra e branca de nomes de domínio. Definir uma lista de permissões para o site A permitirá apenas a reprodução de vídeos no site A; definir uma lista negra para o site B proibirá a reprodução de vídeos no site B, o que pode efetivamente impedir que recursos de vídeo originais do usuário sejam ilegalmente apropriados.

8. Dados ATS/HTTPS à prova de violação

O protocolo HTTPS adota o protocolo HTTPS, que fornece autenticação de sites e métodos de comunicação criptografados para evitar interceptação de informações e ataques de "phishing", impedir efetivamente que páginas da Web sejam adulteradas e garantir a segurança das informações entre empresas e estudantes; Padrão ATS, sistema operacional Apple segue ATS Padrão, após ativar o recurso de segurança ATS, a transmissão da rede é transmitida automaticamente através do protocolo HTTPS para garantir a reprodução segura do vídeo.

9. Ofuscação e criptografia do código do jogador

O código do player é criptografado para evitar descompilação, ofuscação de código, etc.

10. Desative o arrastamento da barra de progresso do vídeo

Exemplo de proibição da função arrastar e soltar no player HTML5 (comumente usado em cenários: treinamento corporativo, conteúdo de ensino on-line proíbe os alunos de arrastar vídeos para assistir).

 Minhas recomendações de artigos:

Acho que você gosta

Origin blog.csdn.net/sinat_33049251/article/details/132765885
Recomendado
Clasificación