如何为网页添加密码保护?

How can I add password protection to a webpage?

当我点击我网站上的一些图片时,我希望它要求输入密码并检查密码是否正确。如果输入了正确的密码,则转到该站点。但我对网站制作还很陌生。我知道网页代码是开源的。只需检查元件和动臂。所以我想出的这个密码保护代码很没用

var userResponse = "N/A";

function askPass() {
    "use strict";
    userResponse = prompt("What's the password?", "000000");
    if (userResponse === "SpeculAcessPls") {
        window.open("www.link.com");
    }
}

如何使我的密码更安全?

为此,您需要一个 php 函数来验证登录表单。

<form action="action.php" method="post">
  <p>Your password: <input type="text" name="password" /></p>
  <p><input type="submit" /></p>
</form>

你的 action.php 应该是这样的:

<?php

if (!$_POST["password"]=="login password")
{
  echo "Wrong password!";
}
?>

快速提示:如果您从未听说过 .htaccess 文件,您需要在 index.html 的目录中创建一个并添加代码以启用 php。下面的 link 将向您展示需要写入文件的内容,以便为您的 Web 服务器启用它。

http://www.besthostratings.com/articles/php-in-html-files.html

我认为不安全。使用:

<input type="password" name="password" value="password">
<input type="button" value="Send" name="send">

我对javascript不是很了解所以不能给你写javascript编码

如果您想保留客户端的所有内容,可以进行一些预处理,您可以使用对称密钥算法(例如 AES)加密您的网页,然后将其发布到 public 网络上。没有服务器端密码验证。

那你的源码是不是大家都能看也没关系,你还是需要密码才能看内容。

伪代码将是(使用 jQuery 标记):

<input type="password" id="password">
<button class="decrypt">Decrypt</button>
<script>
    var myEncryptedPage = '<html-string-encrypted-with-your-password>';
    $('.decrypt').click(function(){
        var password = $('#password').val();
        // 'decrypt' tries to decrypt your string with the user provided password
        window.write(decrypt(myEncryptedPage, password));
    });
</script>

作为参考,如果你想看到一个可能的实现,我使用 crypto-js 库编写了一个简单的 PoC 来展示这个想法 (StatiCrypt),你可以在其中进行预处理和加密你的页面密码提示。

使用 Apache 的解决方案 #1:

  1. 在您要保护的文件夹中创建一个文件.htaccess

    AuthType Basic
    AuthName "restricted area"
    AuthUserFile /home/www/test/.htpasswd    # replace here with the real path
    require valid-user
    
  2. 创建文件 .htpasswd 包含:

    coucou:$apr1$hS5e9bcn$mDINweGTqy8TYNv4aGr3W0
    
  3. 现在该网站将仅供用户 coucou 使用密码 test!

当然,您可以使用 http://www.htaccesstools.com/htpasswd-generator/ 进行自定义。

注:

  • 清除 cookie 似乎可以撤销访问权限(例如:您想离开 public 计算机)
  • 关闭浏览器/重新打开浏览器不足以撤销访问权限
  • 关于如何注销的更多参考:How to logout when using .htaccess (and .htpasswd) authentication?

解决方案 #2 PHP:

只需创建这个 index.php 文件:

<?php
if ($_POST["pwd"] == "thepassword")
{
    echo "You entered the protected page successfully";
    die();
}
?>

<form action="" method="post">
<p><input type="password" name="pwd" autofocus></p>
<p><input type="submit" /></p>
</form>