如何从客户端隐藏javascript代码或使其在服务器端运行,以便客户端永远看不到它?

问题描述 投票:-2回答:1

这可能是一个愚蠢的问题,浪费了每个人的时间,但是我已经坚持了好几个星期,却一无所获,在网络上尝试了许多其他示例/解决方案,但没有成功。任何帮助都非常感谢。总体目标是使在Web服务器上直接访问视频(abc.xyz/videos/video.mp4)尽可能地困难。我不允许建立索引,并试图通过检查隐藏视频的来源。

所以我一直在一个将托管视频的网站上工作。我正在尝试通过使用Blob在网络服务器上安全地隐藏视频的实际位置。我花了很长时间,但终于找到了使用以下代码的方法(如果我做错了,请接受其他有关如何隐藏/保护视频源的建议),但现在我需要在服务器端处理了javascript,因此当您检查网页时,看不到URL。现在我知道这不是百分百的万无一失,但我只是想让普通访问者感到更加困难。

我希望通过将要隐藏的代码移动到一个单独的文件中而不断遇到的一个问题是,它同时包含了javascript和PHP。我尚未找到一种方法来使这项工作。

Index.php

<?php
include("../config.php");
 ?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="/css/master.css">
  </head>
  <body onload="onload()"">
    <div class="Website-Title">
      <h1>Website Name</h1>
      <h6>Fine Text Description</h6>
    </div>
    <?php
    $video = $_GET['v'];
    $fetchVideos = mysqli_query($con, "SELECT * FROM videos WHERE `loc-tag` = '$video'");
    if($row = mysqli_fetch_array($fetchVideos)){
      $location = $row['location'];
      $json_location = json_encode($location);
      $poster = $row['poster'];
      $title = $row['title'];
      $description = $row['description'];

      echo "
      <div style='text-align: center;'><h2>$title</h2></div><p>$description</p>
      <video id='video' controls width='100%'></video>
      <script type='text/javascript'>
      function onload() {
          var xhr = new XMLHttpRequest();
          xhr.open('GET', '../$location');
          xhr.responseType = 'arraybuffer';

          xhr.onload = function(error) {
              var blob = new Blob([xhr.response]);
              var blobUrl = URL.createObjectURL(blob);
              console.log(blobUrl);
              document.getElementById('video').src = blobUrl;
          }
          xhr.send();
      }
      </script>
      ";
    } else {
      echo "Error: Video not found.";
    }

     ?>
  </body>
</html>

我需要隐藏的代码

      <script type='text/javascript'>
      function onload() {
          var xhr = new XMLHttpRequest();
          xhr.open('GET', '../$location');
          xhr.responseType = 'arraybuffer';

          xhr.onload = function(error) {
              var blob = new Blob([xhr.response]);
              var blobUrl = URL.createObjectURL(blob);
              console.log(blobUrl);
              document.getElementById('video').src = blobUrl;
          }
          xhr.send();
      }
      </script>

试图从检查元素中隐藏$ location。

javascript php html security blob
1个回答
0
投票

这就像是世界的基本问题,如果您向客户提供您的代码,则无法获得完全安全的代码。

表示:

  • 任何PC程序都可以被破解
  • 任何FPS射击游戏都可以被“墙黑”(因为客户端必须具有要渲染的其他玩家的位置)]] >>

  • javascript是这样。因为它在客户端运行。

  • 如果将链接发送到mp4文件,则客户端可以通过观察网络轻松地看到该链接。

    这是您可以做的

((使其变得更加困难):
  • 将mp4文件拆分为多个块,然后使用类似HLS的流式传输方法。
  • 或为特定用户建立一次性链接
  • 或结合以上两种策略。
  • 您必须同意:

    • 如果您的用户可以观看您的视频,他们仍然可以拥有该视频内容:

  • 下载您的块,然后将其连接为完整的视频

  • 以全屏模式观看视频,然后录制屏幕

  • 您无法保护网址

  • 列表项

  • 希望我的回答可以节省您的时间。

    © www.soinside.com 2019 - 2024. All rights reserved.