PHPCON2015に参加してまいりました
はじめまして。欲張りスライムです。昨日PHPCON2015に参加させて頂きました。
目的のセッションを聴けただけでなく、サイン本もGETでき、なぜかグラサンも沢山?ただで頂けましたので非常に満足しております。ざっとセッションの内容を共有させて頂きますと、以下のような感じでした。ご参考になれば幸いです。
PHPの今とこれから2015
大まかな内容は以下の通り。日本PHPユーザ会の会員になるのに特に制限があるわけではなく、ご連絡頂ければどなたでも会員になれる?とのことでした。
- PHPリリースサイクルは1年、ライフサイクルは3年(バグ修正:2年、セキュリティ修正のみ:1年)
- 5.4までは2015年10月の時点でサポートが切れるので注意。
- PHP7がPHP5.6よりとにかく大幅高速化していることをアピールしていました。その他、変数コンテナ等、内部構造を大幅最適化し、メモリを削減しているとのことです。
- PHP7では、従来に無い型チェックをStrictモードを使って有効にしたり、致命的エラーをtry~catch文を使って簡単に例外捕捉可能にすることができるようになっているらしいです。
- PHPのこれからとして、PHP7.1の開発、PCO(PHP Cryptography Objects)、JIT?を挙げていました。
PHP7の変更点
今どきのSQLインジェクションの話題総まとめ
徳丸先生のセッション。
SQLインジェクションが原因のクレジットカード情報漏洩裁判で、必要なセキュリティ対策の指示をしなかった発注側の会社でなく、受注側の開発会社に、債務不履行という判決が下った。
⇒開発会社は、自衛のため、最低限のセキュリティ対策と積極的な提案をすべき。
というお話が印象的でした。SQLインジェクションに関する事例や話題が中心で、徳丸先生の日記の内容以上に踏み込んだお話は特にされず。プレースホルダの自作は徳丸先生に怒られることが確定。
昨日(2015/10/3)、OWASP Cheat Sheet Seriesの概要日本語版を公開したとのこと。URLは下記に記載。
http://blog.owaspjapan.org/…/owasp-cheat-sheet-series%E3%82…
ウェブセキュリティをかじった者であればOWASPは皆ご存知だと思われますが、そうでなければIPAしかご存知ないというような方がまだ多いんじゃないかなと思います。その他、ウェブ脆弱性テストツールとしてZAPを紹介していました。
他個人的な感想というか希望:概要だけでなくCheat Sheetも日本語訳お願いします!
Rasmus Lerdorf氏の基調講演
途中で別セッションに行ってしまったため、直接居合わせたわけではありませんが、ツイートを見る限り、最後に
質問者「オススメの、フレームワークとかある?」
Rasmus「PHP作ってる人がPHP知ってると思うなよ……PHPはC言語で書いてんだからオレにはC言語しかわからんよ……」
的なやり取りがあったらしいです(ちなみにRasmus氏はPHPの生みの親です)。そりゃそうっすよね。
↓スライドはこちら
徳丸先生に怒られない、動的SQLの安全な組み立て方
なぜSQLインジェクションが発生するのか? ⇒ 文字列連結でSQLを組み立ててるから
なぜ文字列連結でSQLを組み立てるのか? ⇒ SQLを文字列で指定できてしまうから
そこで、SQLインジェクションを防ぐには
ということとなり、具体的には
- SQLテンプレートならSQLインジェクションが発生しない
- SQL構文木を作ればSQLインジェクションが発生しない
とのことでした。聴講側の徳丸先生が怒っておりませんでしたので、これらの方法は大丈夫だと思われます(テキトー)。
Database Theory, Models and Abstractions
NoSQLとRDBSのそれぞれの特徴について述べてられました。結果的に、どちらがよいか正解・間違いがあるわけでなく、comment systemだとNoSQLがよいが、your HR systemだとRDBSがいいんじゃないかという感じでお話しされていました。ビッグデータの活用を考えると、やっぱりNoSQLの検討もありだなぁという月並みな感想。
↓スライドはこちら
デプロイツールの紹介
主なPHPデプロイツールとして、下記3つを紹介。ざっくりと。
①Envoy
- アプローチはシンプル (タスクを記述したファイルをコンパイル ⇒ タスクごとにリモートサーバへ ⇒ symfony/processによる接続 ⇒ コマンドを実行) ※コンパイル必要?
- 記述したタスクのみを実行
- ローカルタスクはタスクごとに記述
②Deployer
- アプローチ (タスクを記述したファイルを読み込む ⇒ タスクごとにリモートサーバへ接続 ⇒ phpseclib/phpseclibによる接続 ⇒ コールバックでコマンドを実行)
- ローカルタスクをリモートタスク内で実行可能
③Rockerteer
- アプローチは複雑 (サービスをコンテナへ登録し、タスクを記述したファイルを読み込む ⇒ サービスロケータを介してタスクごとにリモートサーバへ接続 ⇒ phpseclib/phpseclibによる接続 ⇒ コマンドを実行)
- ローカルタスクはタスクごとに