如何保护github-pages中的目录?

时间:2014-11-21 15:48:51

标签: jekyll github-pages

我正在使用Jekyll构建我的个人网站并在github-pages上托管它。我想有一个密码保护区(只是密码保护目录,而不是整个网站)。我尝试了一些选项和技巧让htaccess工作但失败了。

我想知道是否有人设法使用htaccess或任何其他方法来保护github-pages上的目录。

列出对我不起作用的解决方案(或者我没有让它们工作):
* Flohei.
* Jeremy Ricketts.

4 个答案:

答案 0 :(得分:7)

GitHubPages(如Bitbucket Pages和GitLab Pages)仅提供静态页面,因此唯一的解决方案是客户端(Javascript)。

解决方案可能是,而不是使用真实身份验证,只是与所有授权人员共享一个秘密(密码),并实施以下方案之一:

  1. 将所有私有文件放在(未列出的)子目录中,并使用所选密码的哈希命名。索引页面会询问您(使用Javascript)密码并构建计算哈希的正确起始链接。

    例如参见:https://github.com/matteobrusa/Password-protection-for-static-pages

    PRO: 非常简单的方法保护整个子目录树

    缺点:

    • 可能的攻击:嗅探以下请求以获取子目录的名称
    • 托管网站上的管理员可以访问完整内容
  2. 使用密码加密页面并使用javascript动态解密

    参见例如:https://github.com/robinmoisson/staticrypt

    PRO:没有纯文本页面代码(在客户端进行解密)

    缺点:

    • 只需一个页面,需要在每次刷新时重新插入密码
    • 管理员可以在您插入密码时更改您的Javascript代码以获取密码

答案 1 :(得分:2)

您可以尝试Jekyll Auth,如果遇到麻烦,this issue can be useful

答案 2 :(得分:2)

一种选择是使用Cloudflare Access在DNS级别上控制访问。 在使用Cloudflare for DNS为Git页面设置自定义域之后,您可以使用其访问规则策略要求在指定的URL路径上进行身份验证。

如果有人熟悉绕过DNS阻止,仍然可以绕开。

https://www.cloudflare.com/products/cloudflare-access/

答案 3 :(得分:-6)

我知道这是一篇很老的帖子,但有人磕磕绊绊会觉得这个解决方案很简单实用。

如果您的文件夹中有一个index.html登录页面,您可以从该目录指向其他子目录,并希望密码保护子目录,则可以在html代码的顶部包含以下密码功能,并使用它整个链接:

<script>
function password() {
  var testV = 1;
  var pass1 = prompt('Enter Your Password', ' ');
  while (testV < 3) {
    if (!pass1)
      history.go(-1);
    if (pass1.toLowerCase() == "Guest") {
      alert('Password Correct');
      window.open("Yournextpage.html");
      break;
    }
    testV += 1;
    var pass1 =
      prompt('Access Denied - Password Incorrect, Please Try Again.', 'Password');
  }
  if (pass1.toLowerCase() != "password" & testV == 3)
    history.go(-1);
  return " ";
}
</script>

只需更改访客密码以及要打开的html。然后,您可以在index.html中使用以下内容:

<input type="button" class="btn btn-default btn-lg" value="Log In" onClick="passWord()">

您可以将课程指定为&#34; text&#34;,例如。