「IPA セキュア・プログラミング講座:Webアプリケーション編」を読んでいる

ウェブアプリの開発をやることになったっぽいので、「IPA セキュア・プログラミング講座:Webアプリケーション編」を毎日少しずつ読んでいる(読書会)。
昨日は「総論」で、全体概要と、開発の各工程で考慮しないといけないことがあるよ、とかいう話(実装段階でちゃんとエスケープすればいいってのもあれば、もっと前の段階で検討しておかんといかんこともあるよ)。
今日は「アクセス制御対策」で、認証と認可。認証は、ユーザー名とパスワードとかで本人確認するあたりの話。認可は、認証された人に何を許可するか・しないかの話。
明日は「サイトデザインにかかわる対策」で、メールの第三者中継やフィッシング対策などのサイトの真正性証明のあたり。
メモ:

ロックアウト

パスワードを変えて何度もトライしてくるブルートフォースアタック(総当たり攻撃)を防ぐため、ログインに何度か失敗したらしばらくの間ログインを禁止する。これを「ロックアウト」と呼ぶらしい。

パスワードフィルタ

ユーザーが推測されやすい簡単なパスワード(短い/ユーザー名を含む/誕生日を含むとか)を作らないようにチェックする仕組みを入れる。簡単なパスワードはダメって昔から言われているけど、実際には複雑にしないユーザーが多いので。
そういや、Windows Live とか、最近のサイトはパスワード設定時にリアルタイムでパスワードの強度を表示したりするな。「ダメですよ」と言っても聞かないのが多いので、危険度を見える化

パスワードの有効期限

業務系は期限設定して社員を従わせるよう運用できるだろうけど、(頻繁に使われない)一般のサイトではユーザーがわずらわしく感じて離れそうなので、難しそうだな。

認可系

権限の有無を引いてくる処理で重くなりそうなので注意。最初からスケーラビリティとか考慮しとかないといかんあたりか。