web-dev-qa-db-ja.com

github-pages内のディレクトリを保護するにはどうすればよいですか?

Jekyllを使用して個人のWebサイトを構築し、それをgithub-pagesでホストしています。パスワードで保護された領域(ウェブサイト全体ではなく、パスワードで保護されたディレクトリのみ)が欲しいのですが。 htaccessを機能させるためにいくつかのオプションとトリックを試しましたが、失敗しました。

誰かがhtaccessまたは他の方法を使用してgithub-pages上のディレクトリを保護できたかどうかを知りたいのですが。

私にとってうまくいかなかった(または私がそれらをうまく働かせることに失敗した)ソリューションのリスト:
* Flohei。
* ジェレミー・リケッツ

21
Mustafa

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コードを変更して、挿入時にパスワードを取得する可能性があります
11

Jekyll Auth を試してみて、問題が発生した場合は この問題が役立つことがあります

2
David Jacquel

1つのオプションは、Cloudflare Accessを使用して、DNSレベルでアクセスを制御することです。 Cloudflare for DNSを使用してGitページのカスタムドメインを設定した後、それらのアクセスルールポリシーを使用して、指定されたURLパスでの認証を要求できます。

誰かがDNSブロックのバイパスに慣れている場合、これはまだバイパスされる可能性があります。

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

2
user3546867