我正在开发一个网络应用程序,它基本上使用 pdf.js 打开一个 pdf 文件。 pdf 文件受密码保护。这是代码摘录。
var the_password = 'thepassword';
var pdf = 'document.pdf';
var loading = pdfjsLib.getDocument({ url: pdf, password: the_password });
因此,在客户端,每个人都可以看到我的密码,我不希望这样,因为我的目标是没有人可以在网络应用程序之外使用 pdf 文件。
如何保护密码?
提前感谢您。
没有什么办法可以让您 100% 确定用户不会找到密码。你能做的最好的事情就是混淆 JavaScript 代码,使没有高度动机(通常是高技能和一点空闲时间)的攻击者无法读取它。
你能做什么呢?好吧,请注意,积极主动的攻击者可以制作页面的屏幕截图并运行 OCR 工具,所以问题是 - 您想投入多少资金来缓解无法修复的问题 -绝对不择手段。
可以通过开发控制台检查进入浏览器的所有数据。并且所有存储在浏览器中的数据也可以通过控制台查看。人们应该假设一旦进入浏览器就没有什么是安全的。
那么该怎么办...?在不说明您试图通过受密码保护的 PDF 来解决什么问题的情况下,我将提供一些想法。
#2 的一个问题是有人可以在 JS 代码中找到你的哈希算法,可以算出每个文件的密码。但你知道是谁干的。
谢谢大家的回答。
确实正如你们大多数人所说,我的问题没有真正的解决方案。但我认为每个人都会在 javascript 文件开头设置纯文本密码。
这就是我所做的:
<?php echo 'password' ?>
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();
仍然有一种简单的方法可以找到密码,但它仍然比纯文本更好,我会坚持使用这个。
感谢大家的帮助。