Webサイトや1ページにパスワードをかける方法
Webサイトにパスワードをかける方法
Webサイトやページにパスワードをかける方法(実際に効く選択肢) | We.Inc
ページやサイト全体を本当に保護できる方法でパスワードをかけましょう。サーバーのBasic認証、ホストやサイトビルダーのページパスワード、会員アカウント、そしてスクリプトだけの制限が失敗する理由を解説します。
本当のパスワード確認は、ページが送られる前にサーバーで行われます。ホストやサイトビルダーのページパスワード設定、ApacheやNginxのHTTP Basic認証、または正式な会員アカウントを使いましょう。JavaScriptで書いたパスワード入力欄は、ブラウザーでページを隠すだけです。コンテンツ自体は届いており、誰でもソースを読めます。
サイトにパスワードをかける方法
- ビルダーやCMSのページパスワード
- はい、プラットフォームが確認
- クライアントやイベント向けの非公開ページ1つ
- HTTP Basic認証(Apache、Nginx)
- はい、HTTPS経由なら
- ステージングサイトやフォルダー全体
- 会員アカウント
- はい、個人ごとに
- 有料または長期運用の非公開エリア
- JavaScriptのプロンプトや隠したdiv
- いいえ
- 重要なものには使えない
ユーザー名とパスワードを入力すると、Basic認証でブラウザーが送信するAuthorizationヘッダーそのものと、それがいかに簡単に平文に戻るかを確認できます。Basic認証をHTTPS経由でしか使ってはいけない理由がわかります。エンコードはお使いの端末で行われ、何も送信されません。
- 共通のパスワード1つで十分か、1人ずつログインが必要かを決めます。
- サイトビルダーやWordPressでは、まずページの公開設定やパスワード設定を探します。
- 自分のサーバーでは、フォルダーまたはlocationにBasic認証を追加し、パスワードファイルは公開Webフォルダーの外に置きます。
- サイトがHTTPSを強制していることを確認し、プライベートウィンドウでテストします。
- Basic認証には、他では使っていない長いパスワードを設定し、プロジェクトやプレビューが終わったら変更しましょう。
- WordPressでは、編集者と管理者は編集画面でパスワードなしにパスワード保護された投稿を見られます。
- 保護されたページでもタイトルは表示されることがあります。ページタイトルに非公開の情報を入れないでください。
- 非公開ページにはnoindexタグも付けて検索エンジンに表示しないよう求めましょう。ただし、それを保護手段として頼ってはいけません。
よくある質問
HTMLだけでページにパスワードをかけられますか?
いいえ。HTMLにはパスワードを確認する手段がありません。ファイルに書いたものはすべての訪問者にダウンロードされるため、確認はサーバーかプラットフォームで行う必要があります。
HTTP Basic認証は安全ですか?
HTTPS経由の場合だけです。RFC 7617では、Base64は暗号化ではなくエンコードであるため、パスワードが平文でネットワークを通ると指摘しており、HTTPSのような手段なしに機密情報の保護に使うべきではないとしています。
WordPressでページにパスワードをかけるには?
ページまたは投稿を開き、公開状態を「パスワード保護」にしてパスワードを入力し、更新します。訪問者にはコンテンツの代わりにタイトルとパスワード入力欄が表示されます。
WordPressサイト全体を保護できますか?
WordPressの公式ドキュメントでは、サイト全体を隠すことはコア機能に含まれないとし、プラグインや.htaccessなどのサーバールールを案内しています。
Basic認証ではブラウザーに何が表示されますか?
サーバーは401とWWW-Authenticateヘッダーで応答します。するとブラウザーがユーザー名とパスワードを尋ね、Authorizationヘッダーを付けてリクエストを再送します。
スクリプトだけの制限が失敗する理由
- よくあるチュートリアルでは、prompt()を追加し、同じスクリプトに書かれたパスワードと入力を比較します。ブラウザーはすでにページ全体をダウンロードしており、パスワードはソースの中にあるので、ソースを表示すれば誰でも見られます。JavaScriptをオフにすれば、確認自体を完全に飛ばせます。
- CSSで隠したコンテンツも同じです。言葉がHTMLの中にあれば、それは公開されています。
実際に効く選択肢の選び方
- クライアントと共有する1ページなら、ビルダーやCMSのページパスワードが最も手早く安全な選択です。サイトのステージング用コピーなら、サーバーのBasic認証で検索エンジンのクローラーも含めて全体を非公開にできます。
- 人によって必要なアクセスが違う場合や、後で1人だけ外す必要がある場合は、アカウントを使いましょう。共通のパスワード1つでは、全員分を変更しない限り1人から取り上げることはできません。
フォルダーを本当に保護するサーバー設定
パスワードファイルはApacheに付属するhtpasswdツールで作成し(例:htpasswd -c /etc/apache2/.htpasswd client)、公開Webフォルダーの外に置きます。
Apache:保護するフォルダー内の.htaccess
Require valid-userは、パスワードファイルに記載された人なら誰でも通します。
Nginx:1つのlocationを保護
Nginxも同じhtpasswdファイル形式を読み込みます。編集後はNginxを再読み込みしてください。
やってはいけない例:JavaScriptによる制限
見分けられるように掲載しています。パスワードもコンテンツも、すべての訪問者がダウンロードするファイルに含まれています。
Basic認証が送信するもの
ユーザー名
パスワード
コロンはパスワードとの区切りになるため、ユーザー名にコロンは使えません。
ブラウザーがすべてのリクエストで送信するヘッダー
リクエストを見た人なら誰でもデコードできる内容
Base64は暗号化ではありません。HTTPSがなければ、このヘッダーからパスワードが漏れます。
無料で始める · クレジットカード不要
関連: ガイド|Webマーケティングと集客を学ぶ
製品
ご利用いただける方
機能
リソース
会社情報
サイトマップを見る