【问题标题】:How can I password protect a section of a static website?如何使用密码保护静态网站的一部分?
【发布时间】:2019-11-04 15:39:51
【问题描述】:

我有一个基本的静态网站,用 html、css 和一些用于动画的 javascript 编码。我没有从访问者那里收集任何信息,所以我只需要基本的安全措施,即使用密码打开目录或页面。

有没有一种简单的方法可以做到这一点? 我只有使用共享安全证书的基本(并且超级便宜)托管。

理想情况下,我可以设计一个漂亮的文本字段和按钮,如果访问者使用正确的密码,它将解锁并重定向到目录。

就上下文而言,我是一名设计师,这是针对我不希望公开获得或被搜索引擎索引的其他工作示例。

【问题讨论】:

    标签: html security passwords


    【解决方案1】:

    在 apache 服务器(大多数基本共享主机使用 Apache)上执行此操作的最简单方法是使用 .htaccess/.htpasswd 文件。 (是的,在 . [dot] 之前甚至没有空格,并且最后没有 . [dot]。有些人会将这些论文称为 .htaccess [dothtaccess] 甚至只是 htaccess 文件)

    在您想要保护的目录中,您可以放置​​一个名为 .htaccess 的文本文件,其信​​息类似于:

    AuthType Basic
    AuthName "My Special Directory"
    AuthUserFile /path/to/.htpasswd
    Require valid-user
    

    /path/to/.htpasswd 需要更改为 .htpasswd 文件的完整路径。因此,在许多共享主机系统上,这可能类似于 /home/username/domain.name/.htpasswd - 一般来说,如果可以避免的话,您不希望将 .htpasswd 文件放在 public_html 目录中。

    从那时起,您需要在线创建一个 .htpasswd 生成器,例如 http://www.htaccesstools.com/htpasswd-generator/ - 由于您说您拥有非常基本的廉价主机,我假设您没有创建 .htpasswd 所需的 shell 访问权限。 htpasswd 文件在服务器本身上。

    .htpasswd 文件看起来像这样:

    anyusername:$apr1$3AtMWVIs$f4OYAR1WDctQ1EFHDq0UA/
    

    如果您可以访问 shell,则可以只使用应该可以访问的 htpasswd 二进制文件来生成它。如果您想创建一个新文件,该命令将如下所示(-c 表示创建新文件):

    htpasswd -c /home/username/domain.name/.htpasswd user1
    

    如果您将用户添加到现有文件中,或者像这样:

    htpasswd /home/username/domain.name/.htpasswd user2
    

    【讨论】:

    • 谢谢!我会试试这个。我感觉在我的 cpanel 中也可能有一个用于设置 htaccess 的 GUI。过去尝试过这种方式时,我不喜欢这种方式,因为 apache 密码输入表单的视觉设计与我网站的现代外观不一致。
    • 不幸的是,HTTP 基本身份验证输入框由浏览器控制,而不是由服务器/站点控制,因此您无法为其设置主题。有一些方法可以在 PHP(甚至可能是 JavaScript)中实现类似的东西,可以让你做到这一点,但据我所知,在标准 HTML/CSS 中没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2021-03-16
    • 2023-04-02
    • 2012-12-13
    • 2010-12-15
    • 1970-01-01
    相关资源
    最近更新 更多