HTML ページにパスワードをかけて、知っている人だけに見せる方法
結論
HTML ページにパスワードをかけるなら、ページがブラウザに届く前にパスワードを確かめる方法を選びます。JavaScript で入力欄を出すだけのやり方は、パスワードがページのソースに書かれていて、開けば誰でも読めます。確かな方法はレンタルサーバーの Basic 認証、StatiCrypt での暗号化、パスワード機能のある公開サービスの 3 つで、Convika なら ChatGPT や Claude で作った HTML をアップロードし、パスワードを設定して公開するだけです(Pro プランは月 $12。初めて公開した日から 14 日間は、カード登録なしで Pro を使えます)。
初めての公開から 14 日間は、カード登録なしで Pro を使えます。その後は月 $12
ChatGPT に頼んで、取引先に出す見積もりと工程表を HTML のページにまとめた。見せたいのは先方の担当者 3 人だけで、URL が転送されて誰にでも開かれるのは困る。そこで必要になるのが、ページにかけるパスワードです。このガイドでは、パスワードのかけ方を仕組みの違いから比べたうえで、Convika で HTML ページにパスワードをかける手順を説明します。
HTML でパスワードをかけるには、まず仕組みの違いを知る
HTML でパスワードをかけるには、ページを送る前にサーバーでパスワードを確かめるか、ページの中身を暗号化しておく必要があります。HTML だけでは、ページを守るパスワードはかけられません。
「html パスワード」で調べると、<input type="password"> の説明がよく出てきます。これはフォームの入力欄で、打った文字を「●」で隠すだけのものです。ページそのものは守れません。
パスワードをどこで確かめるかで、方法は 3 つに分かれます。
- 見る人のブラウザで確かめる。 JavaScript で入力欄を出す方法です。パスワードはページの中に書かれています。
- ブラウザで暗号を解く。 StatiCrypt のような暗号化ツールです。パスワードが暗号を解く鍵になります。
- サーバーで確かめる。 レンタルサーバーの Basic 認証や、公開サービスのパスワード機能です。パスワードが正しいときだけ、ページが送られます。
JavaScript のパスワードでは守れない理由
よく紹介されるのは、次のようなスクリプトです。入力されたパスワードが違えば、ページの中身を消します。
<script>
var password = prompt("パスワードを入力してください");
if (password !== "himitsu") {
document.body.innerHTML = "パスワードが違います";
}
</script>
このスクリプトが動く前に、ブラウザはファイルをまるごと受け取っています。パスワードの「himitsu」も、隠したいはずの本文も、受け取ったファイルの中にあります。右クリックの「ページのソースを表示」で誰でも読めますし、ブラウザで JavaScript をオフにすれば、入力欄すら出ません。2026 年 10 月 13 日に、このスクリプトを入れたページを公開し、ブラウザを使わずに curl で取得してみると、返ってきた HTML にはパスワードも、隠したはずの文もそのまま入っていました。
セキュリティの弱点を分類した MITRE の一覧でも、この作りは CWE-602「Client-Side Enforcement of Server-Side Security」として挙げられています。サーバーで確かめるべきことをブラウザ側に任せると、ブラウザ側の動きを変えるだけで確認をすり抜けられる、という弱点です。英語圏の Q&A サイト Stack Overflow のこの質問(閲覧 62,850 回)にも、CSS や HTML、JavaScript に書いたパスワードの確認はすべてブラウザにダウンロードされるので役に立たず、確認はサーバー側でする必要がある、という回答が付いています。
パスワードをかける 4 つの方法
| 方法 | パスワードを確かめる場所 | パスワードなしで中身を読めるか | 独自ドメイン | 必要な準備 |
|---|---|---|---|---|
| JavaScript で入力欄を出す | 見る人のブラウザ | 読める。ソースにパスワードと本文がある | どこでも使える | スクリプトを貼る |
| StatiCrypt などで暗号化する | ブラウザ(暗号を解く) | 読めない。ただし暗号化したファイルは誰でもダウンロードでき、手元で何度でもパスワードを試せる | どこでも使える | ファイルを暗号化してから置く。直すたびに暗号化し直す |
| Basic 認証(レンタルサーバー) | Web サーバー | 読めない | 使える | .htaccess と .htpasswd を置く |
| 公開サービスのパスワード機能 | サービスのサーバー | 読めない | サービスによる(次の表) | 管理画面で設定する |
Basic 認証(レンタルサーバー)
Apache で動くレンタルサーバーなら、Basic 認証が昔からの定番です。ページを開くと、ブラウザがユーザー名とパスワードを聞く小さな画面を出し、正しいときだけサーバーがページを送ります。Apache の認証のドキュメントにある手順は、次のとおりです。
htpasswdのコマンドでパスワードファイルを作ります(例:htpasswd -c /home/example/.htpasswd tanaka)。ドキュメントは、このファイルを「ウェブからアクセスできる場所に置くべきではありません」としています。- パスワードをかけたいフォルダに
.htaccessを置き、次のように書きます。
AuthType Basic
AuthName "Members only"
AuthUserFile /home/example/.htpasswd
Require valid-user
.htaccess に認証の設定を書けるかどうかは、サーバー側の設定(AllowOverride AuthConfig)しだいです。パスワードはフォルダごとにかかるので、1 ページだけにかけるなら、そのページ用のフォルダを作ります。
StatiCrypt などの暗号化ツール
StatiCrypt は、HTML のファイルを AES-256 で暗号化して、パスワードの入力画面の付いた HTML にする無料のツールです。暗号を解くのはブラウザの JavaScript なので、どこに置いても使えます。ただし、暗号化したファイルは誰でもダウンロードできます。README も、総当たりや辞書攻撃が手元で速く試せてしまうので、長く推測されにくいパスワードを使うよう勧めています。ページを直すたびに、暗号化し直してアップロードします。
公開サービスのパスワード機能
ページを置いたサービスのサーバーが、パスワードを確かめます。Basic 認証と同じくサーバー側で確かめる方法で、サーバーのファイルを編集したり、コマンドを打ったりする必要はありません。使えるサービスは、次の表にまとめました。
サービスごとのパスワード機能
2026 年 10 月 13 日に、各社のヘルプと料金ページで確かめた内容です。
| サービス | 公開したページにパスワード | 使えるプラン | 独自ドメイン | 見る人に必要なもの |
|---|---|---|---|---|
| GitHub Pages | かけられない | 見る人を絞るには GitHub Enterprise Cloud | 関係なし | リポジトリの読み取りアクセス |
| Netlify | かけられる(サイト全体か、フォルダごと) | Pro(月 $20) | 使える | パスワード |
| Cloudflare Pages | パスワードはない。Access でメールに届くコードを使う | Access の Free(50 ユーザーまで) | ドメインごとに Access の設定が要る | 許可されたメールアドレス |
| Google サイト | かけられない | 無料 | 使える | 名前かメールアドレスで追加してもらう |
| Wix | かけられる(ページごと、サイト全体) | ヘルプに記載なし | プレミアムプランから | パスワード |
| STUDIO | かけられる(サイト全体だけ) | Personal 以上(年払いで月 1,190 円) | 使える | パスワード。ブラウザを閉じると入力し直し |
| Notion | かけられない | 関係なし | 関係なし | Notion のアカウント(招待) |
| Tiiny Host | かけられる | Solo(月 $18、年払いなら月 $13) | Solo 以上 | パスワード |
| Convika | かけられる(ページごと) | Pro(月 $12、年 $108)。最初の公開から 14 日間は無料(カード登録なし) | Free で 1 つ、Pro は無制限 | パスワード |
- GitHub Pages: GitHub のドキュメントには「GitHub Pages サイトのリポジトリがプライベートの場合 (プランまたは組織で許可されている場合) でも、サイトはインターネット上で一般公開されます。」とあります。プライベートで公開するには organization が GitHub Enterprise Cloud を使う必要があり、開けるのはリポジトリの読み取りアクセスを持つ人だけです(サイトの可視性の変更)。
- Netlify: Netlify のドキュメント(英語)によると、サイト全体へのパスワードは Pro で使え、クレジット制の Free と Personal では使えません。フォルダごとにかけるなら
_headersのファイルにBasic-Authのルールを書く方法もあり、Basic 認証のドキュメント(英語)によると、これも Pro と Enterprise のプランで使えます。Pro は料金ページで月 $20 です。 - Cloudflare Pages: Pages に付いているアクセス制限はプレビュー用のデプロイだけが対象で、公開中のサイトは守れません(Cloudflare のドキュメント、英語)。公開中のサイトで見る人を絞るなら Cloudflare Access を使い、Access のポリシーで許可したメールアドレスにだけ、ログイン用のコードが届きます(ワンタイム PIN)。Access は 50 ユーザーまで無料です。
- Google サイト: Google のヘルプによると、[公開済みサイト] の横で [制限付き] を選ぶと、名前かメールアドレスで追加したユーザーにだけサイトを共有できます。パスワードの機能はありません。
- Wix: 英語版の Wix のヘルプによると、ページごとにパスワードをかけられ、サイト全体を 1 つのパスワードで守ることもできます。どのプランで使えるかは書かれていません。Wix には HTML のファイルをそのままアップロードする方法がなく、独自ドメインはプレミアムプランからです(「Wix の無料プランで独自ドメインは使える?」)。
- STUDIO: STUDIO のヘルプには「対象プラン:Personalプラン以上(旧プラン:Starterプラン以上)」とあり、「ページ単位でパスワード保護を設定することはできません。」とも書かれています。パスワードを入力したあとにブラウザを閉じると、もう一度入力が必要です。Personal の料金は「STUDIO の無料プランで独自ドメインは使える?」で 2026 年 10 月 12 日に確かめたものです。
- Notion: Notion のヘルプは、「ページをパスワードで保護することはできますか?」に「残念ながら、現時点ではできません。」と答えています。相手が Notion のアカウントを持っていれば、招待して共有できます。
- Tiiny Host: 料金ページのコードでは、パスワードの機能は Solo(月 $18、年払いなら年 $156)から含まれています。パスワード機能のページ(英語)では、ワンクリックでオンにできると説明しています。
Convika で HTML ページにパスワードをかける手順
Convika の無料アカウントを作る
app.convika.com で登録します。カード登録は要りません。
HTML のファイルをアップロードする
管理画面で「HTMLファイルをアップロードする」を押し、「ファイルから」のタブにファイルをドロップします。ChatGPT や Claude のコードをコピーした場合は、「コードから」のタブに貼り付けます。.html と .htm のファイルで、2 MB までです。「プレビューをつくる」を押すと、非公開のプレビューができます。この時点では、まだ誰にも公開されていません。
「サイト設定」でパスワードを設定する
サイト詳細の下のほうにある「サイト設定」の「閲覧パスワード」に、パスワードを入力して「パスワードを設定する」を押します。半角の英数字・記号・スペースで 8〜128 文字です。Pro なら、公開の前でもあとでも設定できます。まだ一度もページを公開していなければ、Free のままでも設定できます。このとき画面には、公開すると Pro を 14 日間無料で使えるようになり、最初の訪問からパスワードの入力画面が出ると表示されます。
公開する
「公開する」を押し、確認の画面でもう一度「公開する」を押します。yourpage.convika.com のようなアドレスで、パスワード付きのページが公開されます。docs.example.com のような自分のサブドメインで出すなら、サイト詳細の「ドメイン管理」からつなぎます。Free で 1 つ、Pro では数の上限がありません。
URL とパスワードを別々に伝える
URL はメールで、パスワードはチャットや電話で、というように別々に伝えます。URL だけを知った人には、パスワードの入力画面しか見えません。
見る人の画面
2026 年 10 月 13 日に、この方法で試しに 5 つのページにパスワードをかけ、ログインしていないブラウザと curl で開いて確かめました。
- 自分のアドレスに、入力画面が出る。 「このページはパスワードで保護されています」という見出しと入力欄、「ページを表示する」のボタンが並ぶ画面です。サイト設定の言語が日本語のページなら、この画面も日本語で表示されます。
- 正しいパスワードが入るまで、ページは届かない。 入力画面の応答には、ページのタイトルも本文も入っていませんでした。Convika は、パスワードをサーバーで確かめてからページを送ります。公開前にパスワードを設定したページも、公開した直後の最初の訪問から入力画面になりました。
- 間違えたときは「パスワードが違います。確認して、もう一度入力してください。」と表示されます。同じ IP アドレスから 15 分の区切りの中で 10 回間違えると、しばらく待つよう表示されます。
- 一度入力すれば、7 日間は入力なしで開ける。 再読み込みしても、入力画面は出ませんでした。
- パスワードを変えると、全員が入力し直す。 「パスワードを変更する」のあとは、前のパスワードで開いていた人にも入力画面が出ます。「パスワードを外す」と、URL を知っている人なら誰でも開けるページに戻ります。
- 検索エンジンに見えるのは入力画面だけ。 入力画面は検索結果に載せないよう指示していて、ページはサイトマップにも載りません。
- 管理画面のプレビューには、パスワードがかからない。 自分で確かめるためのものなので、相手には公開したアドレスを送ります。
- 公開し直しても、パスワードはそのまま。 パスワードを設定したあとに新しいバージョンを公開しても、入力画面が出ました。
Pro を続けなかったときは。 14 日間の無料期間が終わって Free に戻っても、パスワードはかかったままで、ページがひとりでに公開されることはありません。Free でもパスワードを外すことはでき、変更には Pro が必要です。
フォームとアクセス数も、パスワードの内側で
- フォームは、パスワードを入れた人だけが送れる。 サイト詳細の「フォームを追加する」でページにフォームを付ければ、届いた内容を管理画面で見られます。Pro なら、毎月の件数に上限はありません。2026 年 10 月 13 日の確認では、パスワードを入れていないブラウザから送った内容は 401 で断られて保存されず、パスワードを入れた人が送った内容は管理画面に届きました。フォームの使い方は「AI で作ったページの問い合わせフォームに、送信内容が届くようにする方法」にあります。
- アクセス数は、パスワードを通ったあとから数える。 入力画面だけを見て帰った人は数えません。入力画面で止まったブラウザが 1 つ、パスワードを入れて開いた人が 1 人という条件で確かめると、管理画面のページビューは 1、訪問者は 1 でした。数字の見方は「AI で作ったページのアクセス数と流入元を見る方法」にあります。
パスワード付きリンクとの違い
「パスワード付きリンク」をうたうツールの多くは、ページではなく URL を隠します。たとえば Link Lock の README には、パスワードが正しければ元の URL を取り出して、そこへ移動させる、とあります。移動先のページそのものにはパスワードがかかっていないので、元の URL を知った人はパスワードなしで開けます。ページそのものを守るなら、ページを置いたサーバー側でパスワードを確かめる方法を選びます。
目的別の選び方
- Apache のレンタルサーバーをすでに借りている: Basic 認証。追加の費用なしで、サーバーがパスワードを確かめます。
- 1 つのファイルを数人に見せるだけ: StatiCrypt(無料)。暗号化したファイルは手元で何度でも試せるので、長く推測されにくいパスワードにします。
- ホームページ全体を Wix や STUDIO で作っている: それぞれのパスワード機能。STUDIO はサイト全体にしかかけられません。
- 見る人ごとにログインさせたい、誰が開いたかを知りたい: Cloudflare Access のように、メールアドレスで本人を確かめる仕組み。Convika のパスワードはページごとに 1 つを共有する方式で、わかるのは訪問の数で、誰が見たかではありません。
- ChatGPT や Claude で作った HTML を、自分のドメインでパスワード付きで見せたい。フォームとアクセス数もほしい: Convika。最初の公開から 14 日間は無料(カード登録なし)で、その後は Pro(月 $12)です。
よくある質問
HTML でパスワードをかけるにはどうしたらいいですか?
HTML だけではかけられません。サーバーでパスワードを確かめる(レンタルサーバーの Basic 認証か、パスワード機能のある公開サービス)か、StatiCrypt のようなツールでファイルを暗号化します。Convika なら、HTML をアップロードして「サイト設定」の「閲覧パスワード」でパスワードを設定し、公開するだけです。
パスワードの入力欄(input type="password")でページは守れますか?
守れません。<input type="password"> は、フォームの入力欄に打った文字を隠すだけのものです。ページを守るには、サーバーでパスワードを確かめるか、ページを暗号化します。
JavaScript でかけたパスワードは安全ですか?
安全ではありません。パスワードもページの本文も、ブラウザが受け取るファイルの中にあります。「ページのソースを表示」で読めますし、JavaScript をオフにすれば入力欄も出ません。パスワードは、サーバーで確かめる方法でかけます。
Google サイトにパスワードをかける方法は?
Google サイトには、パスワードの機能がありません。Google のヘルプによると、公開の設定で [制限付き] を選び、見せたい人を名前かメールアドレスで追加すると、その人たちにだけ共有できます。メールアドレスを知らない相手にも見せるなら、パスワードをかけられる公開サービスを使います。Google サイトの無料プランでできることは「Google サイトは無料で使える?」にまとめています。
Wix で特定のページにパスワードを設定するには?
英語版の Wix のヘルプによると、Wix ではページごとにパスワードを設定でき、サイト全体を 1 つのパスワードで守ることもできます。どのプランで使えるかは、ヘルプに書かれていません。ChatGPT や Claude で作った HTML のファイルは Wix にそのままアップロードできないので、HTML のまま見せるなら、パスワード機能のある公開サービスに置きます。
パスワード付きリンクとは何ですか?
URL を知っているだけでは開けず、パスワードを入れると開けるリンクのことです。ただ、ツールによって守っているものが違います。Link Lock のように URL を隠すだけのものは、元の URL を知られるとパスワードなしで開けます。Convika のパスワードは、ページを置いたアドレスそのものにかかります。
Notion のページにパスワードはかけられますか?
かけられません。Notion のヘルプは「ページをパスワードで保護することはできますか?」に「残念ながら、現時点ではできません。」と答えています。相手が Notion のアカウントを持っていれば、招待して共有できます。
GitHub Pages にパスワードはかけられますか?
かけられません。GitHub のドキュメントによると、リポジトリがプライベートでも、GitHub Pages のサイトはインターネット上で一般公開されます。見る人を絞るには GitHub Enterprise Cloud が必要で、開けるのはリポジトリの読み取りアクセスを持つ人だけです。
Netlify のパスワード保護は無料で使えますか?
使えません。Netlify のドキュメントによると、サイト全体にかけるパスワードは Pro(月 $20)からで、Free では使えません。ログインせずに Netlify Drop にドラッグしたサイトにかかる仮のパスワードは別のもので、Netlify のクイックスタートによると、ログインしてサイトを引き取るまでのものです。
無料でパスワード付きのページを作れますか?
作れます。StatiCrypt は無料で、暗号化したファイルはどこにでも置けます。すでにレンタルサーバーを借りているなら、Basic 認証も追加の費用なしで使えます。Convika は、最初のページを公開した日から 14 日間、カード登録なしで Pro を使え、その間はパスワードも無料です。続けるなら Pro(月 $12)です。