シングルサインオンに関する問題
【H20春SW午後1問4】
1.シングルサインオンの方式
- エージェント方式:Webサーバに専用のソフトウェアを導入する。ディレクトリ・サービス、HTTP Cookieを使用。認証情報をシステム間でやりとりする。
- リバースプロキシ方式:リバースプロキシサーバを使用。ユーザからの認証要求を認証サーバが引き受け、各システムに接続し認証の代行を行う。
2.エージェント方式:認証無効・再ログインについて
利用者が5分以上操作を行わないと自動的にそれまでの認証を無効にし、再度ログインを求めるために行う処理を実現するには
- 認証済チケットに含まれる、a「認証処理サーバが認証済みチケットを発行した時刻」を取り出す。
- b「認証処理サーバの現在時刻」とaを比較する。
- 差が5分以内の場合、要求を社内システムサーバに中継し、応答の中継時に、認証済みチケットの中のaの部分の内容を、bに置き換え、要求基に返す。
- 差が5分を超える場合、要求元に対する認証を無効とし、「ログインの要求」を行う。
Webアプリケーションの脆弱性についての問題
【H27春SC午後1問1】
1.セッションIDの保護、Cookieのsecure属性
Set-Cookieヘッダにsecure属性が設定されていないと、第三者にセッションIDを盗聴されるリスクがある。 ⇒ セッションハイジャック
■secure属性
WebブラウザがHTTPS通信を行うときに限り、Cookieをサーバへ送信するための属性
設定されていない場合、HTTP通信でもCookieを送信する。HTTPSでは暗号化されるため盗聴はされないが、HTTPでは暗号化されないので盗聴のリスクがある。
2.HTTPヘッダインジェクション攻撃
サーバ側でHTTPレスポンスに不正なヘッダを出力させる攻撃
HTMLヘッダの前に改行(CRLF)を2つ入れることによって、パラメタをSet-Cookieヘッダから分離し、空白行を挿入することでHTTPレスポンスボディになるようにする。
⇒ パラメタをHTML文としてブラウザに解釈させる。
上記と同様に、クライアント側で任意のスクリプトを実行させる攻撃に、クロスサイトスクリプティングがある。
⇒ 対応策:ヘッダ出力用の関数やAPIを使用する。それができない場合は、出力文字列に改行コードがあるとエラー画面を出力する(出力文字列の改行コード以降の文字列を削除)
3.セッションフィクセーション攻撃(セッション固定化攻撃)
攻撃者が取得したセッションIDを標的とした利用者に使わせ、その利用者になりすましてセッションを乗っ取る攻撃
ログイン前とログイン後に同じセッションIDを使用していると攻撃を受ける可能性がある。
⇒ 対応策:ログイン後に新しいセッションIDを発行し、新しいセッションIDによるセッションを開始する。