会員サイト構築の記事
ARTICLEPHPを使ったログイン機能は安全?セキュリティ観点での詳細を解説
ログイン機能は、ユーザーIDとパスワードを用いる会員サイトには必須の機能です。PHPでログイン機能を実装する場合は、悪意ある第三者からの攻撃を防ぎ、データベースの情報を悪用されないためのセキュリティ対策が必要です。
PHPを使ったログイン機能とは?仕組みは?
PHPを使うと、会員サイトには必須のログイン機能を実装できます。ログインフォームの外観はHTMLで、新規会員登録時のデータベースの作成とログイン認証の処理はPHPで作成しましょう。
1.HTMLでログインページを作成する
まずはHTMLでログイン画面のページを作成します。メールアドレスとパスワードの入力欄と、「ログインする」と書かれたSubmitボタンを作ります。その下には新規登録者用のメールアドレスとパスワードの入力欄、Submitボタンも作っておきましょう。この段階ではPHPは使わず、フロントエンドの操作だけです。
2.MySQLでデータベースを作成し、新規会員登録ができるようにする
次にMySQLでデータベースを作成し、認証対象の会員情報を保管して新規会員登録ができるようにします。「config.php」ファイルにデータベース名とユーザー名、データベースに接続するためのパスワードを記載しましょう。以降はconfig.phpを参照し、簡単にMySQLのデータベースに接続できるようになります。
そしてPHPでコードを書き、MySQLに入力された情報の追加処理をします。会員のメールアドレスとパスワードを追加する、メールアドレスがすでにデータベース内にある場合に重複登録を防ぐ、英数字を混在させるなどと条件に合ったパスワードを設定してもらう処理が必要です。
加えてHTMLでメールアドレスを新規登録する場合と、重複している場合との画面をそれぞれ作り、PHPのif文を併用して処理を分けましょう。
3.PHPでログイン認証の処理を作成する
会員にログイン画面からメールアドレスとパスワードを入力してもらったら、config.phpを使ってMySQLのデータベースに接続します。
PHPのselece from where構文を用い、入力されたメールアドレスがデータベースにあるかを検索し、ない場合にはアラート文を返す処理もしましょう。そしてパスワードを確認できたらセッションにメールアドレスを渡し、セッションIDを生成して置き換えます。
合わせて読みたい記事「ログイン機能とは?仕組みやPHPで実装する手順を解説」
PHPを使ったログイン機能のセキュリティ対策
PHPを使ったログイン機能のセキュリティ面の安全性と、対策法を紹介します。
会員サイトで会員がログインに成功すると、データベースのあるサーバーからセッションIDが払い出されます。そしてセッションIDはクッキーを使い、会員側に保存されます。その後会員がログアウトをサーバーに要求すると、サーバー側がセッションIDなどの情報を削除します。
セッションIDの有効期限は短めに
悪意ある第三者がセッションIDを盗んで利用するまでには、ある程度の時間がかかります。そのためセッションIDの有効期限は短時間にしておくと、悪用される可能性を減らせるでしょう。
ですがセッションIDの有効期限があまりにも短いと、フォームの入力中に有効期限切れになってしまいます。一般的な会員サイトなら、セッションIDの有効期限は30〜60分程度がよいでしょう。
セッションIDを無効化するログアウト機能は必要
悪意ある第三者にセッションIDを利用されないようにするためには、ログアウト機能を実装してセッションIDを無効化できるようにしましょう。ログアウト用のボタンはわかりやすい場所に設置した方が、会員サイトの安全性が増します。
ログイン履歴を参照できるようにする
最後にログインしたのがいつで、どのIPアドレスなのかを確認できるようにしておくと、いたずら目的のなりすましを防止しやすくなります。また、会員自身がログイン履歴を参照し、不正ログインに気づけたら、データ改ざんの確認やパスワード変更などをすぐに対応できるようにもなるでしょう。
過去数回分のログイン履歴や、IPアドレスだけでなくDNSの逆引きをしてホスト名も参照できるようにすると、よりセキュリティを高められます。
セッションアダプション対策を強化する
「セッションアダプション」とは、PHPに標準で付いているHTTPセッション管理モジュールのセキュリティ上の脆弱性をいいます。
悪意の第三者が存在しないセッションIDを試した場合、本来はセッションIDを新規作成して初期化します。ですが現在のセッション管理モジュールでは、すでにあるセッションIDで初期化してしまうため、悪意の第三者に有効なセッションIDがバレてアカウントが乗っ取られてしまうのです。
セッションアダプション対策をするには、PHP用のパッチを適用する方法があります。またはログイン処理で「session_regenerate_id」を呼び出す前に、すべてのURLでセッションID用のクッキーを削除しましょう。
自動ログイン機能を実装するなら正しい方法で
会員サイトに自動ログイン機能を実装するなら、正しい方法で行う必要があります。自動ログイン機能は会員にとっては利便性が高く、メリットがありますが、セキュリティ面のリスクは高まるからです。
クッキーに固定の自動ログイン鍵を保存してしまう、セッションIDの有効期限を長く設定する、自動ログイン鍵を全部のページで送信してしまうと、会員サイトの安全性が低下します。自動ログインを実装するときは、ログイン用の鍵はセッションIDとは別のクッキーを使う、ログインの度に鍵を更新する、ランダムな文字列だけを利用するなどの設定をしましょう。
圧倒的な柔軟性とセキュリティで思い通りの会員向けサイト・サービスを構築するなら
当社のご提供する 「会員管理・会員サイト構築ソリューション」は、会員向けのサイトやサービスに必要とな要素をワンストップで提供するシステムです。
会員データ管理からマイページ作成・ログインなどの基本機能から、メール配信やアンケート作成、問い合わせ、フォーム作成、決済連携まで、会員管理・運営に必要な機能が充実。また、金融機関・官公庁でも採用されている高いセキュリティで会員の大切なデータを管理します。WordPressやMovableTypeを始めとした各種CMSや基幹システム等とのAPI連携も可能です。
ファンクラブやユーザーサポートサイト、学会・協会サイト、申請受付サイト、キャンペーン受付サイト、イベント受付管理、入居者サイトなど様々な業界・用途・シーンで延べ11,000以上のご利用実績がございます。
サービスの詳細については「会員管理・会員サイト構築ソリューション」のページをご覧いただくか、サービス導入をご検討中の方はこちらからぜひお問い合わせください。
まとめ
PHPを使うと新規会員登録とログイン、ログアウト処理が可能なログイン機能を会員サイトに実装できます。会員サイトのセキュリティを高めるためには、いくつかのポイントに注意してログイン機能を作成する必要があるでしょう。