タグ別アーカイブ: パスワード

セキュリティの勉強してます。(その2)

最近仕事先のセキュリティの試験を受けるために勉強しているので、そのときのメモです。

—————————————–
セキュリティ設計
—————————————–

認証の実装方法:
・パスワード
・IPアドレス→プロキシは使えない
・SSL証明書→不特定多数向けではない

パスワードの保存:ハッシュ化して保存する。ハッシュ化することで、漏洩時の危険性を回避可能

アカウントロック:総当たり攻撃・辞書攻撃の回避に必要

パスワードリカバリ(秘密の質問など):便利だがセキュリティの強度を下げるので注意が必要

パスワードの発行方法:
・ブラウザに表示するのは危険(パスワードリカバリを悪用された場合など)。
・メールで通知する(この場合もフリーメールのアドレスだと別人に再取得されたりする問題がある。定期的にアカウントをチェックさせたりすることが有効)

セッションに整理番号のようなものを付けることによって、ステートフルのような通信を行うことができる。

セッションの実装方法:
・hidden:最も安全
・cookie:最も一般的、XSS、CSRF対策が必要
・URLに付加:ログやブラウザから漏洩する。携帯のみ。

セッションフィクセーション対策:
・認証が成功してからセッションを開始する

CSRF対策:
・攻撃者が推測できない情報を含める(パスワード、トークン)
・正規の画面遷移を経ているか追跡する、refererをチェックする

特定のユーザーにアクセスさせたい動画、PDF、Flashなども同様の対策が必要

アドレスバー、ステータスバーは表示させる:
・URLや、HTTPSで保護されているかどうかの確認が困難になる
・フィッシングなどの危険性がある

フレームは使用しない:
・表示している画面のURLなどが確認しづらい

HTTPの問題点:
・平文で送信され、途中で改ざんされる恐れがある。
・DNSやhostsファイルが汚染されていた場合に、別のサーバにつながる恐れがある。

HTTPSとは:
・データが暗号化される。
・証明書による認証が行われる
・改ざんを検知することができる

HTTPS使用時の注意点:
・信頼された証明機関の証明書を使用する
・フレームは使用しない
・HTTPと比べてサーバへの負荷が高い

データ送信先だけではなく入力フォームもHTTPSで保護する

低 SSLv2→SSLv3→TLSv1 高
低い暗号強度のものは使わない

リダイレクト:
・リダイレクトされたことが分かる画面を表示して安心感を与える。

リダイレクタの悪用:
・攻撃者が作ったサイトにユーザを誘導する

リダイレクタの設計:
・遷移先を限定する
・URLの変更ができないようにする

データファイル、パスワードファイル:
・データファイル、パスワードファイルはWebサーバのドキュメントルート以外のところにおく
・ディレクトリのパーミッションをWebユーザアプリケーションに限定する
・スクリプトとは別ファイルで管理する