Categories
PHP+MySQL ホームページ制作・作成

2段階認証

2段階認証とは?

ID、パスワード以外の認証を加えることでセキュリティを強化する仕組みのこと。

2019年7月に騒がれた「7pay」で話題になりましたので「2段階認証」の言葉をご存知の方は多いと思います。

念のためですが、ログイン画面で見かける「読みにくい文字を入力させる」ものとは違います。

以下のいずれかの方法で時間制限があるセキュリティコードを受信しそれを入力する方式です。

  • SMS
  • 電話
  • アプリ
  • Eメール
  • その他

個人情報を取り扱う管理画面へのログインに導入を推奨いたします。

導入するには?

SMS及び電話の場合、セキュリティコードを発信するため、SMS配信サービス会社や音声配信サービスとの契約が別途必要になります。

アプリの場合、自社アプリを開発するのもありですが、Google が提供している「Google Authenticator」があります。但し、利用者にアプリのインストールと初期設定を行なってもらう必要があります。さらに利用者が機種変更されたときの処理が大変になる場合もあります。

以上から、Eメールでの受信がもっとも導入しやすいものと思われます。

具体的には

  1. GitHub にある GoogleAuthenticator.php をダウンロード
  2. CodeIgniter の場合、ファイル名を Googleauthenticator.php を変更
  3. CodeIgniter のマニュアルに従って defined(‘BASEPATH’) OR exit(‘No direct script access allowed’); を追記
  4. 当ファイル内の class PHPGangsta_GoogleAuthenticator を class Googleauthenticator に変更
  5. 当ファイルを application/libraries にアップ

Controller で以下のように指定する。

$this->load->library('googleauthenticator');
$secret = $this->googleauthenticator->createSecret();
echo( $secret.'<br>' );
echo( $this->googleauthenticator->getQRCodeGoogleUrl('mokuren',$secret).'<br>' );
$oneCode = $this->googleauthenticator->getCode($secret);
echo( $oneCode.'<br>' );
$checkResult = $this->googleauthenticator->verifyCode( $secret, $oneCode, 2 );
if( $checkResult )
{
	echo( 'OK' );
}
else
{
	echo( 'NG' );
}

2段階認証をはじめセキュリティを強化したい場合は当オフィスまでお気軽にご連絡下さい。お見積もり・ご相談は無料です。