如何隐藏存储在 javascript 文件中的密码以使用 PDF.JS 打开 PDF 文件?

How do I hide a password stored in a javascript file to open a PDF file with PDF.JS?

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

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

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

如何保护密码?

提前致谢。

进入浏览器的所有数据都可以通过开发控制台进行检查。并且所有存储在浏览器中的数据也可以通过控制台查看。人们应该假设 NOTHING 一旦进入浏览器就是安全的。

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

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

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

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

你可以做什么呢?好吧,请注意,一个积极进取的攻击者也可以制作页面的屏幕截图和 运行 OCR 工具,所以问题是 - 你想投入多少来缓解不可能 -绝对没有办法修复。

谢谢大家的回答。

确实如你们大多数人所说,我的问题没有真正的解决方案。但是在 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();

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

感谢大家的帮助。