http://canape.stars.ne.jp/リスク軽減してみた
❗HTTP のままにするリスク
通信が暗号化されていない
→ IDやパスワードが「平文」で送信され、盗聴される可能性があります。
Basic認証の情報も暗号化されない
→ .htpasswd の認証情報も盗まれるリスクがあります。
フォームで送信されるデータも危険
→ login.php などで送信されるパスワードや入力内容も傍受されやすくなります。
ログイン認証付き 管理者専用ページの構築手順
このページでは、ハッシュ化されたパスワードを用いて、ログイン認証機能を備えた管理者ページを構築する方法を説明します。セキュリティを重視した構成になっています。
1. .env にハッシュ済みパスワードを保存
まず、ログイン用のパスワードを PHPの password_hash()
関数でハッシュ化し、.env
ファイルに保存します。
ADMIN_PASSWORD_HASH=$2y$10$....(ハッシュ文字列)
注意: .env
ファイルは外部に公開せず、.gitignore
に追加して管理します。
2. vlucas/phpdotenv ライブラリのインストール
.env
をPHPから読み込むために、Composerを使用して以下をインストールします。
composer require vlucas/phpdotenv
3. ディレクトリ構成の例
/canape_save2_docs/
├── .env
├── vendor/
└── secure-admin-portal-94cfa3/
├── admin.php
└── logout.php
4. admin.php によるログイン処理
管理者ページの admin.php
では、.env
を読み込み、入力されたパスワードと比較します。パスワードが一致した場合のみページを表示します。
password_verify()
を使用してハッシュを検証- セッションでログイン状態を維持
- 未ログイン時はログインフォームを表示
5. logout.php によるログアウト
セッションを破棄してログアウトする logout.php
を作成します。
6. セキュリティ補足
- .envファイルをWeb上に公開しない(
htdocs
の外に置くのが理想) - .envはGitに含めない(
.gitignore
に記述) - 管理ディレクトリ名は推測されにくいものに変更
- .htaccess と .htpasswd を活用したアクセス制限
.htaccess
を使うことで、特定ファイル(例:admin_config.php
)へのアクセスを制限できます。.htpasswd
にユーザー名と暗号化パスワードを登録し、認証を求めることで、管理エリアを外部から守ることができます。.htpasswd
はWebからアクセスできない安全な場所(public_html
の外など)に配置するのが望ましいです。
7. 表示例(マスク済みパスワード)
管理者ページでは、登録情報の一覧表を表示できます。パスワード欄は********
とマスクすることが一般的です。
8. 補足
希望に応じて、CSVやデータベースからの情報読込、自動表示、パスワード可視化のボタン追加なども可能です。
以上が、純粋なPHPで構成されたログイン認証付きの管理者専用ページを作成する手順です。