第12章 セキュリティ
教科書「プログラミングPHP 第2版」
上級試験は、オライリーから出版されているプログラミングPHP 第2版を教科書に出題されます。
セッションID固定攻撃
- セッションID固定攻撃は方法が簡単。セッションハイジャックの前段階として行われることもある。
- login.php?PHPSESSID=1234 をクリックさせることで、攻撃者はセッションIDを知ることができる(そのユーザーとしてログインできる)。
- session_regenerate_id() で権限変更時にセッションIDを作り直す
ファイルアップロード
- ブラウザから送信されたファイル名を信頼しない。プログラム側で命名する。
- アップロードファイルサイズを post_max_size で制限する
- is_upoaded_file で、アップロードされたファイルかどうかチェックする
- ファイル移動は move_uploaded_file を使用する
ファイルアクセス
- open_basedir で特定のディレクトリのみアクセス可にする
- httpd.conf を編集すると、バーチャルホスト毎/ディレクトリ毎/URL毎に設定できる
- umask を使用してパーミッションを限定する(ファイルを作成してからパーミッション変更は好ましくない)
- 重要なデータはファイルに保存しない。データベースに保存する。
セッションファイル
- PHP ビルトインセッションは、tmp フォルダに sess_(ID) で保存する。所有者はウェブサーバー(通常 nobody)
同一サーバー上の PHP スクリプトは、任意のセッションファイルを読み込み可能。 - httpd.conf で、VirtualHost 毎にセッションパスを変更する
ライブラリファイル
- ドキュメントルートの外へ配置する
- ルート内に置く場合は、.htaccess で制限する
※原書を元にしています。日本語訳本とは用語等が異なる可能性があります。
Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.