是否有适用于本地文件的密码保护类型?

时间:2018-12-14 16:53:19

标签: javascript html css

在我的个人计算机上的网站未使用localhost的情况下,我想知道是否有不需要php / htaccess或localhost网络的密码保护技术。我的电脑上只有纯HTML文件。我知道,自从它在我的个人计算机上以来,就没有办法得到完全的保护,而只有一个简单的方法,我可以将密码存储在文本文件中,然后我的网站使用它来获取登录信息。

谢谢。

1 个答案:

答案 0 :(得分:0)

好吧

function gamma(text, key) {
    let res = '',
        i = 0;

    for (let c of text)
        res += String.fromCharCode(
            c.charCodeAt(0) ^ key.charCodeAt(i++ % key.length))

    return res
}

site = "Z\t\u001d\u0005\u0012O\u0011\u0004\n\u0000\u0000VA\f\u000b\n\bHL\u0003\u000fO\u0006\u0003\u0003\u001d\u0017WI\t\u001d\u0005\u0012Q"

onload = function() {
    document.body.innerHTML = gamma(site, prompt('password?'))
}

除非您输入有效的密码(恰好是“ fork”),否则您将获得垃圾邮件,而不是站点。

基本上,它(使用幼稚的游戏算法)“加密”整个网页。由于这是对称加密,因此可以使用相同的密钥将文本恢复为初始状态。

这是一个小片段,可以使整个过程自动化:

function gamma(text, key) {
  let res = '', i = 0;
  for (let c of text)
    res += String.fromCharCode(c.charCodeAt(0) ^ key.charCodeAt(i++ % key.length))
  return res
}

$ = x => document.getElementById(x)

encode = function() {
  let site = $('site').value,
    pass = $('pass').value
  let enc = JSON.stringify(gamma(site, pass))

  $('out').value = [
    '<script>',
    `site = ${enc}`,
    gamma,
    'onload = function() {',
    'document.body.innerHTML = gamma(site, prompt("password?"))',
    '}</' + 'script>'
  ].join('\n')
}
<h3>Ultimate web protector, patent pending!</h3>

<p><textarea id="site" cols=80 rows=10>my site</textarea></p>
<p><input id="pass" value='my password'></p>
<p><button onclick="encode()">Encode!</button></p>
<p><textarea id="out" cols=80 rows=10></textarea></p>

对于将来的读者:该代码是一个玩笑,甚至不要考虑使用它来真正保护任何严重的东西!但是,如果您使用诸如AES之类经过验证的算法来替换上面的简单“加密”,那么如果您拥有无服务器环境,但仍需要用密码保护,则可以将其用作现实解决方案的原型。