如何禁用浏览器右键菜单中的“另存为...”选项,以防止客户下载视频?
是否有更完整的解决方案可以防止客户直接访问文件路径?
如何禁用浏览器右键菜单中的“另存为...”选项,以防止客户下载视频?
是否有更完整的解决方案可以防止客户直接访问文件路径?
防止 HTML5 视频被下载(右键保存)
<video type="video/mp4" width="330" height="300" controlsList="nodownload" oncontextmenu="return false;" controls></video>
似乎通过websocket流式传输视频是可行的选择,就像流式传输帧并在画布上绘制它们一样。
我认为这将提供另一种保护级别,使客户端更难获取视频,并且当然解决了您的问题,“保存视频为...”右键上下文菜单选项(过度杀伤?!)。
我发现一个类似问题的好答案,使用PHP代替JavaScript能更好地保护安全。
我想在用户的浏览器中使用浏览器默认播放器播放test.mp4视频文件(就好像在网页上单击了URL/test.mp4一样),但需要输入密码才能访问,密码可以由用户提供或软件内部提供。
以下是这个想法的简要概述。它始于用户访问(运行)我编写的名为secure.php的程序来播放test.mp4视频文件。
test.mp4视频文件位于子目录(“secureSubdirectory”)中,该子目录包含一个.htaccess文件,其中包含“Require all denied”。这立即阻止了通过URL的任何直接访问。
当运行secure.php时,它会提供一个密码(或向用户查询密码),然后对其进行POST请求,其中包括密码,并使用PHP命令使用盐值验证密码:
$Hash=base64_encode(hash_hmac("sha256",$Pwd,$Salt,true));
$HashesAreSame=hash_equals($Hash,$GoalHash);
然后测试test.mp4是否存在,并执行以下PHP代码,将test.mp4文件作为字节流返回给用户的浏览器:
header("Content-Type: video/mp4");
echo file_get_contents("secureSubdirectory/$path");
exit;
@Clayton-Graul提供了我需要的内容,但是我需要适用于使用AngularJS的网站的CoffeeScript版本。以防你也需要,这是你需要在相关的AngularJS控制器中输入的内容:
# This is how to we do JQuery ready() dom stuff
$ ->
# let's hide those annoying download video options.
# of course anyone who knows how can still download
# the video, but hey... more power to 'em.
$('#my-video').bind 'contextmenu', ->
false
“Circle K 附近发生了奇怪的事情”(这是真的)
浏览器中看到的所有内容都是下载的内容。所涉及的问题是如何在浏览器中保存该内容。为了查看内容,客户端浏览器从内容服务器下载并将其在本地提供。
一种越来越流行的解决方案是仅在浏览器中保存(短暂的)内容,并且在有限的时间内以不能直接保存的方式进行保存。 Blob 是其中一种实现,具有减少带宽和存储开销的额外好处,因为内容存储在二进制对象中。
内容的短期过期使得持久存储对于普通用户几乎不可能,因为新内容会在用户尝试保存已过期内容之前显示。
文件→另存为
)保存它。即使您可以某种方式阻止此操作,他们也可以使用 view-source 找到文件的 URL。即使您可能会对其进行一些模糊处理,他们也可以从缓存中获取。即使您可能会将其复杂化(例如流式传输),他们也可以使用嗅探器或其他工具来捕获网络流量。事实是,如果您将其发送给用户,他们可以保存它。没有任何绕开这一点的方法。您需要问自己的问题是,为什么您非常需要阻止它?这真的很必要吗?这是否值得花费时间和让用户感到不友好? - Synetech