【问题标题】:How do I hide a password stored in a javascript file to open a PDF file with PDF.JS?如何隐藏存储在 javascript 文件中的密码以使用 PDF.JS 打开 PDF 文件?
【发布时间】:2020-10-21 04:09:43
【问题描述】:

我正在开发一个网络应用程序,它基本上使用 pdf.js 打开一个 pdf 文件。 pdf 文件受密码保护。这是代码的摘录。

    var the_password = 'thepassword';
    var pdf = 'document.pdf';
    var loading = pdfjsLib.getDocument({ url: pdf, password: the_password });

所以在客户端每个人都可以看到我的密码,我不希望这样,因为我的目标是没有人可以在网络应用程序之外使用 pdf 文件。

如何保护密码?

提前谢谢你。

【问题讨论】:

  • PDF 文件来自哪里?如果它来自您的网络服务器,则每次发送一个使用随机密码加密的 PDF,并将该随机密码传递给网络客户端以响应客户端的 API 请求。
  • 您应该说明您要解决的实际问题。例如,为什么pdf密码受到保护?

标签: javascript security password-protection pdf.js drm


【解决方案1】:

没有什么可以让您 100% 确定用户不会找到密码。您可以做的最好的事情是混淆 JavaScript 代码,使其不被没有高度动机的攻击者读取(通常是高技能和一点空闲时间)。

你能做什么呢?好吧,请注意,一个积极主动的攻击者也可以截取页面并运行 OCR 工具,所以问题是 - 你想投入多少资金来缓解无法修复的问题 -绝对不行。

【解决方案2】:

可以通过开发控制台检查进入浏览器的所有数据。并且所有存储在浏览器中的数据也可以通过控制台查看。应该只是假设没有什么是安全的,一旦它进入浏览器。

那该怎么办...?在不说明您尝试使用受密码保护的 PDF 解决的问题是什么的情况下,我将提供一些想法。

  1. 当下载来自批准的来源和/或用户时,将服务器端的 PDF 转换为没有密码
  2. 在下载时为每个用户转换 PDF,每个用户都有自己的密码。它可能是一些可以在浏览器中计算的用户属性的哈希值。这也可以兼作水印。
  3. 越界发送密码(电子邮件、短信)并让用户将其输入用户界面。
  4. (在最后一条评论之后添加)使用DRM system for PDFs。 Adobe 有一个content-server

#2 的一个问题是有人可以在 JS 代码中找到您的哈希算法,每个文件的密码都可以计算出来。但你会知道是谁干的。

【讨论】:

  • 感谢您的回答。pdf 文件是我要出售的一本书。购买它的人可以使用它一年。过完年要查的话就得重新订阅了。pdf文件可以缓存在浏览器里。任何人都可以进入缓存并将其复制粘贴到个人文件夹中。完成此操作后,他们可以在一年过去后访问它。这就是为什么我必须用密码保护 pdf 文件。
  • 明白了...我刚刚添加了第三个想法
  • 听起来您确实需要 DRM 服务
【解决方案3】:

感谢大家的回答。

确实,正如你们大多数人所说,我的问题没有真正的解决方案。但是我认为每个人都会在 javascript 文件的开头使用纯文本密码。

这就是我所做的:

  1. 创建一个包含我的密码的 php 文件
<?php echo 'password' ?>
  1. 然后,当我需要它来使用 pdf.js 加载我的 pdf 文件时,我会执行 Ajax 请求
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) 
    {
        loading = pdfjsLib.getDocument({ url: pdf_url, password: this.responseText 
    }
);
xmlhttp.open("GET", "filewithpassword.php", true);
xmlhttp.send();

不过,有一个简单的方法可以找到密码,但它仍然比纯文本更好,我会坚持下去。

感谢大家的帮助。

【讨论】:

猜你喜欢
  • 2021-03-27
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
相关资源
最近更新 更多