Weitere ähnliche Inhalte Ähnlich wie 『PHP逆引きレシピ』とセキュリティのこと (20) Kürzlich hochgeladen (11) 『PHP逆引きレシピ』とセキュリティのこと4. 3 『PHP逆引きレシピ』とは?
「やりたいこと」を目的別にまとめたレシピ集
具体的なサンプルプログラムを交えてわかりやすく解説
2009年6月29日に翔泳社より発売
著者が全員、名古屋地域の人
公式サイト http://php-recipe.com/
5. 4 こんな人、こんな用途に最適
こんな人に
PHPを学習中の初級者
開発経験が少ないPHPプログラマー
セキュリティ対策について学習し直したい中級者
こんな用途に
開発者向けの学習・研修
開発時のリファレンスとして
専門学校や大学のプログラミング学習のサブテキスト
6. 5 こんな人は対象外
全くのWebプログラミング初心者
PHP上級者
7. 6 識者のコメント
大垣 靖男さん
— 『はじめてのPHP言語プログラミング入門』、
『PHP ポケットリファレンス』の著者
私も似たような本(PHPポケットリファレンス – 技術評論社)から出
版させて頂いているので、この種類の書籍の執筆がかなり大変で
あることは良く知っています。これだけの内容をこの一冊にまとめ
たのは素 晴らしいと思います。つまずいた時の時間節約の為に、
初心者が購入する本としてお勧めできると思います。
8. 7 識者のコメント
下岡 秀幸さん
— 『はじめてのPHPプログラミング基本編』、
『PHPによるデザインパターン入門』の著者
「プログラム書いたことありません」という、全くのプログラミング初
級者ではちょっと厳しいかも知れませんが、「勉強しながら自分で
ちょっとずつコーディ ングしている」というぐらいの人なら「次のス
テップ」に最適です。あと、サンプルコードはオフィシャルサポート
サイトからダウンロードできますが、実際に 自分で手を動かして書
いてみると効率よく理解できるんじゃないかと思います。
9. 8 識者のコメント
徳丸 浩さん
— 『Webアプリケーションのセキュリティ完全対策』の著者
書かれている内容すべてに同意するわけではないが、少なくとも、
本書で書かれている方法で書いてセキュリティホールが混入する
ということは、ほとんどないのではないか。
10. 9 識者のコメント
小飼 弾さん
PHP本は、これ一冊あれば十分だと強く感じた。
11. 10 識者のコメント
小飼 弾さん
PHP本は、これ一冊あれば十分だと強く感じた。
PHPを使うにしても、使わないにしても。
12. 11 この本の目的
「PHP使いには初級者が多い。いろいろな敷居が低い。底上
げできて、みんな中級者になったら、各方面からdisられる事も
なくなる」
-- shimookaさん
↓
中級者を増やそう!
13. 12 そのために
実用的なサンプルコード
セキュアなサンプルコード
↓
お手本となるサンプルコードにしよう!
本当に実務で使える定番の本にしよう!
14. 13 PHP書籍の現状
ほとんどの書籍に脆弱性
脆弱性のない書籍の方がまれ
例:
print($_POST['name']);
echo "こんにちは".$POST["name"]."さんn";
$id = htmlspecialchars($_GET['id']);
$query = "delete from myblog where id=" .$id . "";
$result = mysql_query($query) or exit("SQLエラー");
extract($_POST);
15. 14 PHP書籍の現状
多くの書籍が、最初に脆弱なコードで説明し、後の方でおまけ
的にセキュリティに触れる
入門書なのに、サンプルコードに脆弱性がある旨しか書かれて
いない
あるいは、まったくセキュリティに触れていないものもある
↓
脆弱プログラマーを増殖させる原因?
16. 15 『PHP逆引きレシピ』では?
セキュリティへの取り組み
すべてのサンプルコードで可能な限り脆弱性をゼロにする
おまけ的セキュリティを否定
セキュリティの章以外でもできるだけセキュアなコード
セキュリティついての章(68ページ)を設け詳説
主要な攻撃手法について、具体的な攻撃方法と防御方法
を解説
17. 16 セキュリティへの取り組み
第8章 セキュリティ
8.1 セキュリティ対策の基本
229 セキュリティ対策の基本を知りたい
230 入力値の検証方法を知りたい
231 文字列を比較する場合の注意点を知りたい
8.2 PHPの設定
232 本番環境でのエラー出力の設定方法は?
233 セーフモードとは?
234 より安全なphp.ini設定を知りたい
18. 17 セキュリティへの取り組み
8.3 セキュリティ対策
235 パラメータ改竄とは?
236 XSSとは?
237 XSS対策をしたい
238 CSRFとは?
239 NULLバイト攻撃とは?
240 SQLインジェクションとは?
241 OSコマンドインジェクションとは?
242 ディレクトリトラバーサルとは?
243 インクルード攻撃とは?
244 eval利用攻撃とは?
245 メールヘッダーインジェクションとは?
246 Cookieを安全に利用したい
247 セッションハイジャック対策をしたい
248 セッション固定化攻撃を防ぎたい
249 SSL利用時にセッションを安全に利用したい
250 Ajaxのセキュリティについて知りたい
19. 18 セキュリティ対策の基本(レシピ229)
1. 入力値の厳格な検証
2. 出力時の適切なエスケープ処理
3. 多重防御
20. 19 入力値の厳格な検証
入力値が想定する範囲のものか検証する
プログラミングの基本
以下も確認しましょう
NULLバイトがないこと
文字エンコード
22. 21 HTMLへの出力の場合
「<」「>」「&」などの特殊文字は文字参照に変換する必要がある
以下のコードは「&」を文字参照に変換しておらず正しくない
$str = '7&i';
echo $str;
外部からの入力にのみhtmlspecialchars()を通すのはナンセンス
原則すべての変数にhtmlspecialchars()を通すべき
23. 22 SQLへの出力
「'」などの特殊文字は、エスケープ処理する必要がある
以下のSQLは、エスケープ処理をしておらず正しくない
$sql = sprintf(
"SELECT * FROM user WHERE user = '%s' AND password = '%s'",
$_POST['id'], $_POST['password']);
ユーザ名「McDonald's」さんは認証できない
エスケープ処理しないのは単なるバグ
原則は、プリペアドステートメントを使うべき
24. 23 多重防御
自分を過信しない
ひとつの対策に賭けたりしない
例、重要な処理の場合は、ユーザーにパスワードを
再入力してもらう
25. 24 『PHP逆引きレシピ』では?
必要な部分は、手抜きせず、htmlspecialchar()を通す
function h($string) { // HTMLでのエスケープ処理をする関数
return htmlspecialchars($string, ENT_QUOTES);
}
メール送信フォームなど、そのまま使われそうなサンプルでは、
NULLバイトと文字エンコードもチェック
26. 25 しかし
書籍の限界
ページ数に限界がある
HTMLでのエスケープ処理
本書でのコーディング規約: 同一ファイルで変数を定義
しているもの以外は、ブラウザに出力するすべての変
数をhtmlspecialchars()でエスケープする処理を入れる
しかし、これは貧民的プログラミング思考(by 高木浩光
氏)であり好ましくない
本来は、すべての変数をエスケープすべき
NULLバイトや文字エンコードのチェック
すべての入力のあるサンプルには入れられなかった
27. 26 しかし
書籍の限界
ある程度古いバージョンもカバーする必要がある
MySQLi関数が使えなければ、プリペアドステートメントは使
えない
MySQL関数を使ったサンプルを入れざるを得ない
29. 28 Amazonのレビューより
間違いなくPHPの書籍の中でNO.1の一冊です。
2009/7/31 By danieru
自分はPHPの本を10冊近く持っていますが間違いなくNO.1の本だと思
います。その十冊はもちろんPHP5に対応していて、高評価されている
比較的新しい本を買ったのでおそらくこの本はPHPの本のなかで最高
の本だと思います。
...略...
この本は一冊目に使う本じゃないと思いますが、一冊目と一緒に買うこ
とをおすすめします。
PHPを勉強している人なら必ず買ったほうがいいと思います。そのくら
いおすすめできます。
いやーようやくでましたかこういう本が。