入門 PHP セキュリティ

久しぶりに PHP のコードを触ることになったので、復習の意味もかねて読んだ。

付録を除けば100ページに満たない薄さの本にコンパクトにおさまっているので、非常に読みやすい。

薄いのだけど説明は抽象的ではなく、XSSCSRF などをコード例を示しつつ具体例を交えて説明しているので、リファレンス的に使えて重宝します。

目次

序文
はじめに

1章 導入
1.1 PHPの特徴
1.2 原理
1.3 実践

2章 フォームとURL
2.1 フォームとデータ
2.2 セマンティックURL攻撃
2.3 ファイルアップロード攻撃
2.4 クロスサイトスクリプト攻撃
2.5 クロスサイトリクエストフォージ
2.6 偽装フォームのサブミット
2.7 HTTPリクエストの偽装

3章 データベースとSQL
3.1 アクセス証明書の流出
3.2 SQLインジェクション
3.3 データの流出

4章 セッションとクッキー
4.1 クッキー泥棒
4.2 セッションデータの流出
4.3 セッション固定化攻撃
4.4 セッションハイジャック

5章 インクルード
5.1 ソースコードの流出
5.2 バックドアURL
5.3 ファイル名の改ざん
5.4 コードインジェクション

6章 ファイルとコマンド
6.1 トラバーサル攻撃
6.2 リモートファイルのリスク
6.3 コマンドインジェクション

7章 認証と認可
7.1 総当たり攻撃
7.2 パスワード盗聴
7.3 リプレー攻撃
7.4 持続的ログイン

8章 共有型ホスティング環境
8.1 ソースコードの流出
8.2 セッションデータの流出
8.3 セッションインジェクション
8.4 ファィルシステム閲覧
8.5 セーフモード

付録A 構成ディレクティブ
A.1 allow_url_fopen
A.2 disable_functions
A.3 display_errors
A.4 enable_dl
A.5 error_reporting
A.6 file_uploads
A.7 log_errors
A.8 magic_quotes_gpc
A.9 memory_limit
A.10 open_basedir
A.11 register_globals
A.12 safe_mode

付録B 関数
B.1 eval( )
B.2 exec( )
B.3 file( )
B.4 file_get_contents( )
B.5 fopen( )
B.6 include
B.7 passthru( )
B.8 phpinfo( )
B.9 popen( )
B.10 preg_replace( )
B.11 proc_open( )
B.12 readfile( )
B.13 require
B.14 shell_exec( )
B.15 system( )

付録C 暗号
C.1 パスワードの格納
C.2 mcryptを使う
C.3 クレジットカード番号の格納
C.4 セッションデータの暗号化
C.4.1 pgcryptoによるセッションデー