安全な PHP アプリケーションの作り方2013
- PHP のライフサイクル
- 最近 WindowsXP のサポート終了が話題
- 9年間だった
- サポートラフサイクルポリシー
- メインストリーム最低2年
- 延長サポート最低5年
- 最新版を使う限り、最低7年のサポートが保証されている
- PHP のサポート状況
- わりと短い
- PHP4,5
- 運が悪いと3年半くらいしかない
- RFC Release Procs
- Yearly release cycle
- 3 year release
- 2 years bug fix only
- 1 year security fixes only
- まとめ
- ソフトウェア選定時にサポートライフサイクルポリシーを確認すること
- サポート計画を検討する
- PHPをディストリビューションの公式パッケージのもので利用する
- PHPのバージョンアップにとことん付き合う
- 途中でバージョンアップする計画を立てておく
- 他のソフトウエアもサポートライフサイクルに注意
- 最近 WindowsXP のサポート終了が話題
- セッションフィクセーションに対応するする
- PHP 5.5.2 で Strict Sessions がマージされました(大垣さん作
- strict sessions とはなにか
- PHPセッション管理機構には、未初期化のセッション
- (デモ)
- PHP 5.5.4RC1
- sessionを消しても session_id が変わらない←!!!!!!!!!!
- session_strict = 1 にすると勝手なSESSIONIDを許さなくなる
- ログイン成功後に下記を実行すること
- session_regenerate_id(true) を実行する
- PHP 5.5.2 以降では php.ini に以下を指定すると、Session Adoption を防げる
- パスワードの守り方
- Linked In で(SHA1ハッシュ化後の)パスワードが漏洩
- Linked In 650万件のパスワードハッシュのうち540万件が一週間で解読された
- Salt ってなに?
- ソルトとは、ハッシュの元データに追加する文字列
- 見かけのパスワードの長さを長くする→レインボーテーブル対策
- ユーザー毎にソルトを変えることで、パスワードが同じでも、異なるハッシュ値が得られる
- Linked In なら 650万倍のコンピューティングリソースが必要になったはず(一週間で540万件は解読されなかったはず)
- Stretchingってなに?
- ストレッチングとは、ハッシュの計算を繰り返すこと
- ハッシュの計算を遅くすることにより、辞書攻撃や総当り攻撃に対抗する
- password_hash 関数(PHP 5.5)
- 照合のときは password_verify 関数がある
- PHP 5.4 まではすごい面倒
- Linked In で(SHA1ハッシュ化後の)パスワードが漏洩
- デモから学ぶHTML5セキュリティ入門
- まとめ