
体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
PHPをはじめとしたWebセキュリティ業界大御所の一人、徳丸浩氏による著作で、主にPHPとJavaScriptを中心としたWebアプリのセキュアな作り方を比較的具体的に解説してくれる本です。
同系統の書籍として「PHPサイバーテロの技法―攻撃と防御の実際」があり、基本的には現在でも通用する名著ですが、さすがに古いだけあって新しめの攻撃手法には対応していません。
また対象がPHP限定ということもあり、レースコンディション問題やDNSリバインディングといったPHPにはあまり縁のない問題は取り上げられていません。
本書はメインこそPHPですが、JavaやPerl等他の言語についてもフォローがなされており、また同一生成元ポリシーや携帯サイトのセキュリティ、不要なサービスなどといった幅広い分野でのセキュリティ対策にも言及されています。
またVMwareのイメージが添付されており、指示に従ってインストールするだけで簡単にすぐ仮想マシン実行環境ができあがります。
私はXAMPPを使うことが多いのですが、XAMPPはWindows上の実行環境なので、Linuxコマンドなどは全く使用できません。
Linuxをそのまま扱えるVMwareがあると非常に便利です。
SQLインジェクションにはプレースホルダを使えとされており、エスケープについては無かったことレベルの扱いになっています。
このようにネットに溢れる俗説よりも"より正しいと思われる"対処法が書かれており、他のセキュリティ対策についてもググって怪しい手段を試すより遙かに安全で確からしい解法だと思われます。
あと他のセキュリティ対策書ではなかなか見たことのない開発マネジメントの話まで出てきます。
そこまで来ると話が広すぎて一介のPGにはあまり関係のない領域になってくるのですが、開発プロセス上でのセキュリティ対策の扱いなど参考になることもあるかもしれません。
…実はレビュアーの一人として参加していました。
主に著者と私以外のレビュアーのおかげで、Webアプリのセキュリティについて一通り以上のことが学べる本になっています。
「とりあえずある程度のプログラムが作れるようになった、次はどうしよう」というあたりで目を通しておくと、今後Webアプリを作成するうえでためになるでしょう。

PHPサイバーテロの技法―攻撃と防御の実際
SQLのエスケープにaddslashes()を使用してはいけません。
addslashes()を突破可能な穴は既に発見されていますし、
それにSQLiteのエスケープは'なので明白に間違いです。
他の部分が非常に素晴らしいだけに、ここだけ自信を持って
>addslashes()がベスト
とか言ってしまっているのが残念。

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際
英語ができない方、「ついに来た!」と思った方も多いんじゃないだろうか。
私もそんな感じです。6章と7章の攻撃と防御の共進化と暗号学なんて
ソースコード見てもイメージが全くわかなかったけどこれで勝てる気がしてきました。
それと、本が地味に小さくなり、持ち運べそうなサイズになりました。
さて、レビューですが、最近セキュリティに対して注目も強くなっていますが
そんなセキュリティについて学びたいと思っている方にはうってつけの本です。
現段階で和書ではこれを超える本は無いんじゃないかと思っています。
ただ、これは最も基本的な話であってwebに関して(XSSとか)は書いていません。
オーバーフローとかシェルコードとかそういうのがメインです。
この本に書いていないことはmetasploitとかのツール関連、WebSecurity関係、
IDAやimmunityなどのdebugger関係(GDBについては書いてある)、Windows関係(DEPやSEH)
こんなところかな・・・?でも、この本読みきれば、ネットから情報引っ張って
理解できるくらいの知識はつくはず。
最後に
「これから先、セキュリティについては更に難しくなるだろう。昔みたいに、遊び半分では行えない」
と、ある米セキュリティー専門家が言っています。
私として何が言いたいかというと、この本に書いてあるようなことは地味に煮詰まりつつあり、Web関係やMalware関係のセキュリティについて考えていた方が、良いかもしれないということ。この本は実際問題CTFに役に立てるくらいしかできないかもしれません。と最後に言っておきます。
ただ、この本に書いてあること自体、コンピューターに興味がある人から見れば面白いことが書いてあるので、普通のプログラマーからノンプログラマーまで、読んでみると新たな発見があるかもしれない?!