如何隐藏存储在 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 解决的问题是什么的情况下,我将提供一些想法。
- 当下载来自批准的来源和/或用户时,将服务器端的 PDF 转换为没有密码
- 在每个用户下载时转换 PDF,每个用户都有自己的密码。它可能是一些可以在浏览器中计算的用户属性的散列。这也可以兼作水印。
- 越界发送密码(电子邮件、短信)并让用户将其输入 UI。
- (在最后一条评论后添加)使用 DRM system for PDFs. Adobe has a content-server
#2 的一个问题是有人可以在 JS 代码中找到您的哈希算法,可以计算出每个文件的密码。但你会知道是谁干的。
没有什么可以让您 100% 确定用户不会找到密码。您可以做的最好的事情是混淆 JavaScript 代码,使没有高度动机(通常是高技能和一些空闲时间)的攻击者无法读取它。
你可以做什么呢?好吧,请注意,一个积极进取的攻击者也可以制作页面的屏幕截图和 运行 OCR 工具,所以问题是 - 你想投入多少来缓解不可能 -绝对没有办法修复。
谢谢大家的回答。
确实如你们大多数人所说,我的问题没有真正的解决方案。但是在 javascript 文件的开头有一个纯文本密码是我认为每个人都会想到的。
所以这就是我所做的:
- 用我的密码创建一个 php 文件
<?php echo 'password' ?>
- 然后,当我需要它用 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();
不过,有一种简单的方法可以找到密码,但它仍然比纯文本更好,我会坚持使用它。
感谢大家的帮助。
我正在开发一个 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 解决的问题是什么的情况下,我将提供一些想法。
- 当下载来自批准的来源和/或用户时,将服务器端的 PDF 转换为没有密码
- 在每个用户下载时转换 PDF,每个用户都有自己的密码。它可能是一些可以在浏览器中计算的用户属性的散列。这也可以兼作水印。
- 越界发送密码(电子邮件、短信)并让用户将其输入 UI。
- (在最后一条评论后添加)使用 DRM system for PDFs. Adobe has a content-server
#2 的一个问题是有人可以在 JS 代码中找到您的哈希算法,可以计算出每个文件的密码。但你会知道是谁干的。
没有什么可以让您 100% 确定用户不会找到密码。您可以做的最好的事情是混淆 JavaScript 代码,使没有高度动机(通常是高技能和一些空闲时间)的攻击者无法读取它。
你可以做什么呢?好吧,请注意,一个积极进取的攻击者也可以制作页面的屏幕截图和 运行 OCR 工具,所以问题是 - 你想投入多少来缓解不可能 -绝对没有办法修复。
谢谢大家的回答。
确实如你们大多数人所说,我的问题没有真正的解决方案。但是在 javascript 文件的开头有一个纯文本密码是我认为每个人都会想到的。
所以这就是我所做的:
- 用我的密码创建一个 php 文件
<?php echo 'password' ?>
- 然后,当我需要它用 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();
不过,有一种简单的方法可以找到密码,但它仍然比纯文本更好,我会坚持使用它。
感谢大家的帮助。