ウェピックスではウェブ界の情報をピックアップします!
menu
ホーム > PHPセキュリティー > 10 認証システム > 10-1 認証システムへの攻撃と防護策

10-1 認証システムへの攻撃と防護策

Pocket

説明

認証システムへの攻撃
アプリケーションで認証の仕組みを作成する場合は多いと思います。その際どのような攻撃が考えられるか有名な攻撃方法を検討してみます。

データの盗聴
HTTPプロトコルの通信はデータ通信が平文で行われます。この場合、機密情報のやり取りでは、第三者による通信内容の盗聴や改ざんの脅威が発生します。例えば、電子商取引サイトでのユーザーIDやパスワード、クレジットカード番号などが盗聴の脅威に晒されます。機密情報などを取り扱う保護されたリソースに対しては最低限SSLを導入し通信を暗号化しましょう。

総当り攻撃
POINT

  • 総当り攻撃は可能な組み合わせをすべて試す手法

総当り攻撃とは、暗号や暗証番号などを解読する方法の1つで、可能な組み合わせをすべて試すやり方です。理論的にありうる全パターンを入力して解読します。

総当り攻撃の防御策
POINT

  • 認証の時間や回数に制限を掛けることで回避

このような攻撃は、認証の時間や回数に制限を掛けるかけることで回避できます。認証の回数を制限したり、失敗の回数を制限することが防護策となります。

セッションを使用した単純なログイン回数のチェック

login1.php

<?php
//初回はカウント1
if(!isset($_SESSION&#91;'loginCount'&#93;))
$_SESSION&#91;'loginCount'&#93; = 0;
?>
<form action="login2.php" method="POST">
<input type="text" name="username" size="20">
<input type="password" name="password" size="20">
<input type="submit" value="送信">
</form>

login2.php

<?php
//配列変数初期化
$clean = array();
//フィルタ後代入
$clean&#91;'username'&#93; = $_POST&#91;'username'&#93;;
$clean&#91;'password'&#93; = $_POST&#91;'password'&#93;;

//ログイン回数チェック 3回以上失敗の場合は処理停止
if($_SESSION&#91;'loginCount'&#93; >= 3){
	//3回以上失敗
	exit;
}

//認証
$auth = FALSE;
$auth = login($clean['username'], $clean['password']);
if($auth)){
	//認証成功
}else{
	//認証失敗
	$_SESSION['loginCount']++;
	//login1.phpへ戻る
}
?>

認証の時間や回数の制限は攻撃者に操作できないよう注意する必要があります。

リプレイ攻撃
POINT

  • 正規データを再生するリプレイ攻撃

リプレイ攻撃とは、正規ユーザーがログインする時に、ネットワーク上のデータを盗聴し、盗聴データを攻撃者が再生することで不正にシステムへ侵入する攻撃です。プレゼンテーション攻撃とも言われます。この攻撃の場合はネットワーク上の通信データを暗号化するだけでは防護できません。攻撃者は暗号化されたデータそのものを再生して認証サーバーへ送信して浸入を成功させます。

リプレイ攻撃の防御策
POINT

  • チャレンジ・レスポンス方式で回避

リプレイ攻撃を避けるためには、保護されたリソースへは一時的なアクセス権を提供するデータだけを使用すべきで、このデータが流出するのをできるだけ避ける必要があります。

リプレイ攻撃に対して有効な対策に「チャレンジ・レスポンス方式」があります。

チャレンジ・レスポンス方式では、認証サーバーがログイン毎にランダムなデータ「チャレンジ」をクライアントに送信します。「チャレンジ」を受信したクライアントは「チャレンジ」と「パスワード」を演算したデータ「レスポンス」を算出します。この「レスポンス」をサーバーへ送信します。サーバーではデータベースなどに登録されているクライアントの「パスワード」とクライアントへ送信した「チャレンジ」をクライアントと同じ演算方法で「レスポンス」を作成します。サーバーの「レスポンス」とクライアントの「レスポンス」を照合させ、一致すれば、正規のユーザーであり、パスワードが正しいと判断します。

タグ(=記事関連ワード)

日付

投稿日:2012年7月22日
最終更新日:2012年08月29日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://wepicks.net/phpsecurity-auth/trackback/