Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在无服务器环境中对文件(html)进行密码保护?_Javascript_Html - Fatal编程技术网

Javascript 如何在无服务器环境中对文件(html)进行密码保护?

Javascript 如何在无服务器环境中对文件(html)进行密码保护?,javascript,html,Javascript,Html,是否可以在不使用.htaccess、php或localhost的情况下对文件进行密码保护。可能使用某种加密或其他方法。不。好吧,不是任何提供远程安全的东西。您可以在javascript中隐藏密码,可能编码为base64,然后将输入字段的值与存储的base64代码进行比较,但是任何了解view source或javascript的人都可以轻松绕过这一点 密码验证和其他敏感信息必须在服务器端处理,用户无法访问它 没有。好吧,没有提供任何远程安全的东西。您可以在javascript中隐藏密码,可能编码

是否可以在不使用.htaccess、php或localhost的情况下对文件进行密码保护。可能使用某种加密或其他方法。

不。好吧,不是任何提供远程安全的东西。您可以在javascript中隐藏密码,可能编码为base64,然后将输入字段的值与存储的base64代码进行比较,但是任何了解view source或javascript的人都可以轻松绕过这一点


密码验证和其他敏感信息必须在服务器端处理,用户无法访问它

没有。好吧,没有提供任何远程安全的东西。您可以在javascript中隐藏密码,可能编码为base64,然后将输入字段的值与存储的base64代码进行比较,但是任何了解view source或javascript的人都可以轻松绕过这一点


密码验证和其他敏感信息必须在服务器端处理,用户无法访问它

是的,多亏了。 甚至还有一个

所以,是的,您最终可以将任何您想要的数据编码为pgp消息,然后需要密码来解密并使用它

如果您需要加密您的邮件:

异步函数{ const cleartext='alertan无用消息'; const msg=openpgp.message.fromTextcleartext; const ciphertext=等待openpgp.encrypt{ 讯息:msg,, 密码:[mypassword], 盔甲:真的 }; //不过,您最好保存为文本文件, //ECNOD和新行字符很重要 console.logciphertext.data; } .catchconsole.error;
是的,您可以实现相当不错的前端加密,这要归功于。 甚至还有一个

所以,是的,您最终可以将任何您想要的数据编码为pgp消息,然后需要密码来解密并使用它

如果您需要加密您的邮件:

异步函数{ const cleartext='alertan无用消息'; const msg=openpgp.message.fromTextcleartext; const ciphertext=等待openpgp.encrypt{ 讯息:msg,, 密码:[mypassword], 盔甲:真的 }; //不过,您最好保存为文本文件, //ECNOD和新行字符很重要 console.logciphertext.data; } .catchconsole.error;
受@kaido的启发,我开发了一个JavaScript书签。因此,将其作为新书签添加到浏览器中,然后单击它以加密当前页面。系统将要求您插入密码并选择保存加密HTML页面的位置

javascript:(function (doc) {
    var password = prompt('Enter a password to encrypt this page'),
        js = doc.createElement('script');

    js.onload = function () {
        /* Get current page HTML and use a dirty workaround to convert relative paths to full URLs */
        var page = doc.documentElement.cloneNode(true);
        for (var attr of ['src', 'href']) {
            page.querySelectorAll('[' + attr + ']').forEach(function (node) {
                node[attr] = node[attr];
            });
        }

        /* All the magic belongs to openpgpjs.org */
        openpgp.encrypt({
            message: openpgp.message.fromText(page.outerHTML),
            passwords: [password]
        }).then(function (ciphertext) {
            var link = doc.createElement('a'),
                html = [
                    '<!DOCTYPE html>',
                    '<head>',
                    '  <meta charset="utf-8" />',
                    '</head>',
                    '<body>',
                    '  <textarea id="encryptedMessage" style="display:none">' + ciphertext.data + '</textarea>',
                    '  <script src="' + js.src + '"></script>',
                    '  <script>',
                    '    var field=document.getElementById("encryptedMessage");',
                    '    openpgp.message.readArmored(field.value).then(function(message){',
                    '      var decrypter=openpgp.decrypt({message:message,passwords:[prompt("Enter the password to decrypt this page")]});',
                    '      decrypter.then(function(plaintext){document.documentElement.innerHTML=plaintext.data});',
                    '      decrypter.catch(function(e){alert(String(e))});',
                    '    });',
                    '  </script>',
                    '</body>'
                ].join('\n');

            doc.body.appendChild(link);
            link.download = 'protected.html';
            link.href = 'data:text/html;,' + encodeURIComponent(html);
            link.click();
            doc.body.removeChild(link);
        });
    };

    /* This will fail if Content Security Policy prohibits embedded scripts */
    js.src = 'https://cdnjs.cloudflare.com/ajax/libs/openpgp/4.3.0/compat/openpgp.min.js';
    doc.body.appendChild(js);
})(document);

这里可以找到一个加密页面的例子:

受@kaido的启发,我开发了一个JavaScript Bookmarklet。因此,将其作为新书签添加到浏览器中,然后单击它以加密当前页面。系统将要求您插入密码并选择保存加密HTML页面的位置

javascript:(function (doc) {
    var password = prompt('Enter a password to encrypt this page'),
        js = doc.createElement('script');

    js.onload = function () {
        /* Get current page HTML and use a dirty workaround to convert relative paths to full URLs */
        var page = doc.documentElement.cloneNode(true);
        for (var attr of ['src', 'href']) {
            page.querySelectorAll('[' + attr + ']').forEach(function (node) {
                node[attr] = node[attr];
            });
        }

        /* All the magic belongs to openpgpjs.org */
        openpgp.encrypt({
            message: openpgp.message.fromText(page.outerHTML),
            passwords: [password]
        }).then(function (ciphertext) {
            var link = doc.createElement('a'),
                html = [
                    '<!DOCTYPE html>',
                    '<head>',
                    '  <meta charset="utf-8" />',
                    '</head>',
                    '<body>',
                    '  <textarea id="encryptedMessage" style="display:none">' + ciphertext.data + '</textarea>',
                    '  <script src="' + js.src + '"></script>',
                    '  <script>',
                    '    var field=document.getElementById("encryptedMessage");',
                    '    openpgp.message.readArmored(field.value).then(function(message){',
                    '      var decrypter=openpgp.decrypt({message:message,passwords:[prompt("Enter the password to decrypt this page")]});',
                    '      decrypter.then(function(plaintext){document.documentElement.innerHTML=plaintext.data});',
                    '      decrypter.catch(function(e){alert(String(e))});',
                    '    });',
                    '  </script>',
                    '</body>'
                ].join('\n');

            doc.body.appendChild(link);
            link.download = 'protected.html';
            link.href = 'data:text/html;,' + encodeURIComponent(html);
            link.click();
            doc.body.removeChild(link);
        });
    };

    /* This will fail if Content Security Policy prohibits embedded scripts */
    js.src = 'https://cdnjs.cloudflare.com/ajax/libs/openpgp/4.3.0/compat/openpgp.min.js';
    doc.body.appendChild(js);
})(document);

这里可以找到一个加密页面的示例:

是的,您可以只使用JS加密任何消息,而不使用后端,也不使用JS代码中的存储密码。我将描述没有技术细节的简单理论方法:

加密:

创建密码,但不要将其存储在任何位置 从该密码生成长而复杂的散列,例如相同的密码应始终生成相同的散列,而不是将其存储在任何地方; 使用该散列作为密钥,例如对消息进行编码。 解密:

要求用户键入密码 以与加密相同的方式从该密码生成哈希 在对称密钥算法中将该散列用作密钥来解码消息。
正如您所见,在这种方法中,您不需要在任何地方存储密码。

是的,您可以只使用JS加密任何消息,而不使用后端,也不需要在JS代码中存储密码。我将描述没有技术细节的简单理论方法:

加密:

创建密码,但不要将其存储在任何位置 从该密码生成长而复杂的散列,例如相同的密码应始终生成相同的散列,而不是将其存储在任何地方; 使用该散列作为密钥,例如对消息进行编码。 解密:

要求用户键入密码 以与加密相同的方式从该密码生成哈希 在对称密钥算法中将该散列用作密钥来解码消息。
正如您所见,这种方法不需要在任何地方存储密码。

在无服务器环境中,文件是完全安全的。。。因为没有任何东西可以将其内容发送到任何地方,除非通过巫术或Majicks。您是否介意在您试图保护的对象周围添加更多的上下文,以及如何首先分发密码?在无服务器环境中,该文件是完全安全的。。。因为没有任何东西可以将其内容发送到任何地方,也许除了通过巫术或Majicks,您是否介意在您试图保护的对象以及如何分发密码i周围添加更多的上下文
n首先?如果您试图保护存储在桌面操作系统上的文件,您可以使用外部软件或Windows 10的BitLocker.processed在服务器端加密该文件-在无服务器环境中是哪一方?确切地说。也许我应该用一个词来表达server@Jay如何解密此页:?:脚本如何访问私钥?如果您试图保护存储在桌面操作系统上的文件,您可以使用外部软件或Windows 10的BitLocker.processed在服务器端加密该文件-在无服务器环境中是哪一侧?确切地说。也许我应该用一个词来表达server@Jay如何解密此页:?:脚本如何访问私钥?