Submit Search
第一回 社内勉強会 PHP Application Security Checklist に学ぶ PHP セキュリティ (Excerpt)
4 likes
•
1,460 views
Yuya Takeyama
Web アプリケーションにおけるセキュリティの基本、また PHP 特有の問題等について。
Read more
1 of 70
Download now
Downloaded 24 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
More Related Content
PDF
Webアプリ開発者のためのHTML5セキュリティ入門
Muneaki Nishimura
PDF
『PHP逆引きレシピ』とセキュリティのこと
kenjis
PPTX
Metasploitでペネトレーションテスト
super_a1ice
PDF
PHPの今とこれから2016
Rui Hirokawa
PDF
PHP 5.5ネーティブキャッシュの話
Rui Hirokawa
ODP
Ruby build
Yuichiro Naito
PDF
RFC: "var" Deprecation
y-uti
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
Webアプリ開発者のためのHTML5セキュリティ入門
Muneaki Nishimura
『PHP逆引きレシピ』とセキュリティのこと
kenjis
Metasploitでペネトレーションテスト
super_a1ice
PHPの今とこれから2016
Rui Hirokawa
PHP 5.5ネーティブキャッシュの話
Rui Hirokawa
Ruby build
Yuichiro Naito
RFC: "var" Deprecation
y-uti
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
What's hot
(6)
PPTX
Metasploit framework
zatslide
PPTX
Symfony開発者がLaravelしようとして云々
mimizuk
PPTX
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
Kiyoshi Sawada
PDF
Zend OPcacheの速さの秘密を探る
Yoshio Hanawa
PDF
PHPカンファレンス2016 初心者セッション
Hideo Kashioka
PPTX
PHPべんちまーく
chichi1091
Metasploit framework
zatslide
Symfony開発者がLaravelしようとして云々
mimizuk
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
Kiyoshi Sawada
Zend OPcacheの速さの秘密を探る
Yoshio Hanawa
PHPカンファレンス2016 初心者セッション
Hideo Kashioka
PHPべんちまーく
chichi1091
Ad
Similar to 第一回 社内勉強会 PHP Application Security Checklist に学ぶ PHP セキュリティ (Excerpt)
(20)
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
PDF
PHPでセキュリティを真面目に考える
Takuya Sato
PDF
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
Hiroshi Tokumaru
PPTX
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru
PDF
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
PPTX
Web applicationpenetrationtest その5
Tetsuya Hasegawa
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
PDF
Kobe sec#7 summary
Yukio NAGAO
PPTX
Step by stepで学ぶTerraformによる監視付きAWS構築
Yo Takezawa
PPT
Appresso x LUXIAR
lalha
PDF
Phpcon tokyo 20120_bigginer
Hideo Kashioka
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
PPTX
徳丸本に載っていないWebアプリケーションセキュリティ
Hiroshi Tokumaru
PDF
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
PDF
徳丸本ができるまで
Hiroshi Tokumaru
PPT
Using Windows Azure
Shinji Tanaka
PPTX
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru
PPTX
第9回勉強会 Webセキュリティー
hakoika-itwg
PPTX
PHP基礎勉強会
Yuji Otani
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
PHPでセキュリティを真面目に考える
Takuya Sato
ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~
Hiroshi Tokumaru
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012
Hiroshi Tokumaru
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Web applicationpenetrationtest その5
Tetsuya Hasegawa
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
Kobe sec#7 summary
Yukio NAGAO
Step by stepで学ぶTerraformによる監視付きAWS構築
Yo Takezawa
Appresso x LUXIAR
lalha
Phpcon tokyo 20120_bigginer
Hideo Kashioka
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
徳丸本に載っていないWebアプリケーションセキュリティ
Hiroshi Tokumaru
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
徳丸本ができるまで
Hiroshi Tokumaru
Using Windows Azure
Shinji Tanaka
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru
第9回勉強会 Webセキュリティー
hakoika-itwg
PHP基礎勉強会
Yuji Otani
Ad
More from Yuya Takeyama
(16)
PDF
5分でわかる? 関数型 PHP の潮流
Yuya Takeyama
PDF
Good Parts of PHP and the UNIX Philosophy
Yuya Takeyama
PDF
Reactor Pattern and React
Yuya Takeyama
PDF
PHP と MySQL で 1 カチャカチャカチャ...ッターン! MapReduce (@ニコニコ超会議)
Yuya Takeyama
PDF
PHP と MySQL でカジュアルに MapReduce する (Short Version)
Yuya Takeyama
PDF
PHP と MySQL でカジュアルに MapReduce する
Yuya Takeyama
PDF
PHPUnit でテスト駆動開発を始めよう
Yuya Takeyama
PDF
MySQL 入門的なはなし
Yuya Takeyama
PDF
HashTable と HashDos
Yuya Takeyama
PDF
Proposal for xSpep BDD Framework for PHP
Yuya Takeyama
PDF
Building Development Environment with php-build and phpenv
Yuya Takeyama
PDF
PHPUnit でよりよくテストを書くために
Yuya Takeyama
PDF
Making DSL with []
Yuya Takeyama
PDF
LIMIT 付きで UPDATE を行うと何故怒られるか
Yuya Takeyama
PDF
GOOS #1
Yuya Takeyama
PDF
Ruby 同好会宣言
Yuya Takeyama
5分でわかる? 関数型 PHP の潮流
Yuya Takeyama
Good Parts of PHP and the UNIX Philosophy
Yuya Takeyama
Reactor Pattern and React
Yuya Takeyama
PHP と MySQL で 1 カチャカチャカチャ...ッターン! MapReduce (@ニコニコ超会議)
Yuya Takeyama
PHP と MySQL でカジュアルに MapReduce する (Short Version)
Yuya Takeyama
PHP と MySQL でカジュアルに MapReduce する
Yuya Takeyama
PHPUnit でテスト駆動開発を始めよう
Yuya Takeyama
MySQL 入門的なはなし
Yuya Takeyama
HashTable と HashDos
Yuya Takeyama
Proposal for xSpep BDD Framework for PHP
Yuya Takeyama
Building Development Environment with php-build and phpenv
Yuya Takeyama
PHPUnit でよりよくテストを書くために
Yuya Takeyama
Making DSL with []
Yuya Takeyama
LIMIT 付きで UPDATE を行うと何故怒られるか
Yuya Takeyama
GOOS #1
Yuya Takeyama
Ruby 同好会宣言
Yuya Takeyama
第一回 社内勉強会 PHP Application Security Checklist に学ぶ PHP セキュリティ (Excerpt)
1.
第一回 社内勉強会 Security
Checklist に学ぶ PHP セキュリティ Yuya Takeyama 2010/05/21 (Fri)
2.
本日の目的 Webにおけるセキュリティの基本を再確認 「知ってて当然」とされる事柄はあまりに多い。
共通の語彙を身につければ、コミュニケーションコストも下がる。
3.
PHP におけるセキュリティの難所を知る PHP
に特化した、より実践的な話。 教材として PHP Application Security Checklist を使用。
4.
自社サービスにおける問題点の共有
5.
このあと、そのための時間をとる予定。
6.
この機会にぶっちゃけましょう。
7.
アジェンダ Web におけるセキュリティのおさらい
・クロスサイトスクリプティング
8.
・ SQL インジェクション
9.
PHP のセキュリティ
10.
・本当はおそろしい php.ini ・
5c 問題の無間地獄
11.
Cross Site Scripting
Cross Site Scripting Cross Site Scripting Cross Site Scripting
12.
略して
13.
CSS
14.
・・・だと Cascading Style
Sheet と混同するので
15.
XSS 一般的には と呼ばれています
(DVD のプロテクト技術にも CSS ってのがありましたが・・・ )
16.
簡単に 言うと
17.
サイトを越えて 悪意のあるコードを 実行すること
18.
Input from $_GET,
$_POST, $_COOKIE and $_REQUEST is considered tainted.
19.
直訳
20.
$_GET 、 $_POST
、 $_COOKIE 、そして $_REQUEST からの入力は 汚染 を考慮されているか。
21.
Understood that only
some values in $_SERVER and $_ENV are untainted.
22.
直訳
23.
汚染 されていないのは
$_SERVER と $_ENV のいくつかの値だけであることを理解しているか。
24.
つまり
25.
入力の 汚染 を
常に 疑うこと
26.
出力は 常に エスケープ
すること
27.
SQL Injection
28.
例
29.
MySQL による ユーザー認証
30.
SELECT * FROM
users WHERE user = ' yuya ' AND pass = ' doom ' 色 がついているのは、ユーザーのフォームへの入力による値
31.
パスワードが一致しないと レコードが引けない (=
ログインできない ) はずだけど・・・
32.
SELECT * FROM
users WHERE user = ' yuya' OR 1 # ' AND pass = ' doom '
33.
もっと酷い ケース
34.
SELECT * FROM
users WHERE user = ' ';TRUNCATE users # ' AND pass = ' doom '
35.
ただし
36.
PHP の mysql_query
関数は ;( セミコロン ) 区切りによる 複数のクエリ の同時送信は できない 。
37.
さておき
38.
どうしたら SQL インジェクションから
自由になれるか
39.
入力の 汚染 を
常に 疑うこと
40.
出力は 常に エスケープ
すること
41.
SELECT * FROM
users WHERE user = ' yuya \ ' OR 1 # ' AND pass = ' doom ' SQL 文のエスケープをしてあげる ※ SQL 文は PHP アプリケーションから 見れば出力ですね
42.
Web におけるセキュリティのまとめ 入力の汚染を常に疑う
43.
出力を常にエスケープする
44.
これを守るだけで、その他の脅威
45.
・ディレクトリトラバーサル
46.
・クロスサイトリクエストフォージェリ (CSRF)
47.
・コマンドラインジェクション等
48.
も防ぐことができます。
49.
本当は おそろしい php.ini
50.
ここで再び PHP Application
Security Checklist
51.
register_globals is disabled.
52.
直訳
53.
register_globals は 無効化されているか
54.
http://example.net/?debug=on にアクセスすると ”
on” という値を持った 変数 $debug が 勝手に できてしまう
55.
現在は デフォルトで Off
になっているので とりあえず 安心
56.
php.ini には こういう
地雷 がいっぱい しかも On だったりするから困る
57.
addslashes() は マルチバイトを
扱えないから 使用禁止!
58.
magic_quotes_gpc も On
にするの禁止!
59.
addslashes() is not
used.
60.
Magic quotes is
disabled.
61.
PHP Application Security
Checklist さんも そう言ってるので!
62.
magic_quotes_gpc の問題点 エスケープされたもの、されてないものが混在するため、余計煩雑。ありがた迷惑。
63.
そもそも addslashes() がイケてない
( 日本になんて生まれるんじゃなかった )
64.
マルチバイト文字を抜きにしても、 addslashes() ではエスケープできない
DB もある。 (SQLite とか )
65.
PHP6 では削除予定
66.
5c 問題の 無間地獄
67.
addslashes() じゃない SQL
のエスケープについて 考えてみる
68.
mysql_real_escape_string()
69.
これで 安心?
70.
否
71.
mysql_client_encoding() すると latin1
とか・・・
72.
SET NAMES すればいいのでは?
73.
否
74.
SET NAMES しても
mysql_client_encoding() は変わりません。
75.
mysql_set_charset() しましょう とりあえずこれで
うまくいく模様 ( 要検証 )
76.
ただし
77.
mysql_set_charset() は PHP
5.23 以降のみ あとは my.cnf とか 触らないといけなくなる・・・
78.
プリペアド ステートンメント
79.
$sql = "INSERT
INTO artists (id, name) VALUES ( ? , ? )"; $stmt = $db->prepare($sql); $data = array( 1 , ' 野坂昭如 '); $db->execute($stmt, $data); ↑ こーいうの
80.
これで 安心?
81.
否
82.
PHP スクリプトで エミュレート
しているだけだと、 結局同じことが 起りうる
83.
とりあえず Pear は
ダメっぽい
84.
DBMS 側が 提供している
API を利用する ライブラリなら 安心?
85.
PHP における Shitft_JIS
の扱いの難しさ magic_quotes_gpc, addslashes() は禁止
86.
SET NAMES も禁止。
mysql_set_charset() しましょう
87.
プリペアドステートメントは、実装次第 有名ライブラリでも疑り深くテスト
88.
mbstring.internal_encoding は UTF-8
にするのが無難
89.
参考文献 『 PHP
Application Security Checklist 』 http://www.sk89q.com/content/2010/04/phpsec_cheatsheet.pdf Chris Shiflett 『入門 PHP セキュリティ』
Download