欲張りスライムの備忘録

ソフトウェア関連の話題について記載する予定。「明日から本気出す」がモットー。

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の変更点

  • 大幅高速化
  • 致命的エラーを例外補足可能に
  • 古いSAPI、エクステンションの削除
  • ヌル合体演算子(??)
  • 結合比較演算子(<=>)
  • 戻り値型宣言
  • スカラー型宣言
  • 匿名クラス

今どきのSQLインジェクションの話題総まとめ

徳丸先生のセッション。

SQLインジェクションが原因のクレジットカード情報漏洩裁判で、必要なセキュリティ対策の指示をしなかった発注側の会社でなく、受注側の開発会社に、債務不履行という判決が下った。

 ⇒開発会社は、自衛のため、最低限のセキュリティ対策と積極的な提案をすべき。

というお話が印象的でした。SQLインジェクションに関する事例や話題が中心で、徳丸先生の日記の内容以上に踏み込んだお話は特にされず。プレースホルダの自作は徳丸先生に怒られることが確定。

OWASPよりPHPプログラマに贈るセキュリティ実装虎の巻

昨日(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知ってると思うなよ……PHPC言語で書いてんだからオレにはC言語しかわからんよ……」

的なやり取りがあったらしいです(ちなみにRasmus氏はPHPの生みの親です)。そりゃそうっすよね。

↓スライドはこちら

talks.php.net

 

徳丸先生に怒られない、動的SQLの安全な組み立て方

なぜSQLインジェクションが発生するのか? ⇒ 文字列連結でSQLを組み立ててるから

なぜ文字列連結でSQLを組み立てるのか? ⇒ SQLを文字列で指定できてしまうから

そこで、SQLインジェクションを防ぐには

  1. 文字列連結でない方法で動的SQLを組み立てれば良い
  2. SQL文字列ではない方法でSQLを指定できるようにすればよい

ということとなり、具体的には

とのことでした。聴講側の徳丸先生が怒っておりませんでしたので、これらの方法は大丈夫だと思われます(テキトー)。

Database Theory, Models and Abstractions

NoSQLとRDBSのそれぞれの特徴について述べてられました。結果的に、どちらがよいか正解・間違いがあるわけでなく、comment systemだとNoSQLがよいが、your HR systemだとRDBSがいいんじゃないかという感じでお話しされていました。ビッグデータの活用を考えると、やっぱりNoSQLの検討もありだなぁという月並みな感想。

↓スライドはこちら

speakerdeck.com

デプロイツールの紹介

主なPHPデプロイツールとして、下記3つを紹介。ざっくりと。

①Envoy

  • アプローチはシンプル (タスクを記述したファイルをコンパイル ⇒ タスクごとにリモートサーバへ ⇒ symfony/processによる接続 ⇒ コマンドを実行) ※コンパイル必要?
  • 記述したタスクのみを実行
  • ローカルタスクはタスクごとに記述

②Deployer

  • アプローチ (タスクを記述したファイルを読み込む ⇒ タスクごとにリモートサーバへ接続 ⇒ phpseclib/phpseclibによる接続 ⇒ コールバックでコマンドを実行)
  • ローカルタスクをリモートタスク内で実行可能

③Rockerteer

  • アプローチは複雑 (サービスをコンテナへ登録し、タスクを記述したファイルを読み込む ⇒ サービスロケータを介してタスクごとにリモートサーバへ接続 ⇒ phpseclib/phpseclibによる接続 ⇒ コマンドを実行)
  • ローカルタスクはタスクごとに