PHPカンファレンス2015(東京都大田区産業プラザPiO)に参加しました。

「今どきのSQLインジェクションの話題総まとめ」(徳丸浩さん)

SQLインジェクションに関する判決

EC-CUBEをカスタマイズしたときに、SQLインジェクション脆弱性を作りこんでしまった話。(EC-CUBE本体にはSQLインジェクションの報告がないため、開発会社が独自追加した部分だと推測される)

判決の要点としては、
(A)SQLインジェクションが重大な過失と判断された
(B)改善を発注先に提案したが却下された。この点が発注者の過失と認められ、過失相殺により賠償額が少なくなった。
が大きいと思われます。

(A)は、ウェブアプリケーションのセキュリティとしてSQLインジェクション対策が必須であるということですね。SQLインジェクションは確実にバグですから、発注仕様として記載されていなくても当然かもしれません。

(B)は、開発会社の改善提案を却下したことが発注者の過失と判断されたため、受注側から提案することが重視される、ということになるでしょう。提案をしないと100%受注側の責任と判断されたことでしょう。


入門書のSQL

「SQL呼び出しはプレースホルダ」が定着したようです。たいていの場合はプレースホルダを使うと対処できるでしょうから、これは好ましいですね。フレームワークやORMを自作したい場合は、プレースホルダでは対処できないケースもありますが、入門書ではプレースホルダを適切に使うようにすれば十分でしょう。


Drupageddon - Drupal(ver7.31以前)のSQLインジェクション脆弱性。

データベース抽象化APIに問題があったらしいです。発表された当日から、既存のDrupalサイトへの攻撃が行われたらしいです。サイト管理者が対処するとしても即応は難しいかもしれません。なのでCMSは、WordPressのように自動アップデート機能が実装されていると良いかもしれません。

「営業・運用を支える 気付ける 管理画面 」(前田雅央さん)


弊社では運用を重視してインターネット活用のサポートを行っているので、管理画面も重視しています。なので、他の人が管理画面をどう作っているか、は非常に興味がありました。


ページャは大体シンプルでOK

たいてのフレームワークやCMSでページャーが実装されているので、あまり気にせず実装していましたが、たしかに実際にページを直接指定して移動することは少ないかもしれません。私の場合は、URLのページ部分を直接書き換えてしまうこともあります。どうしても移動したければURL直接変更でも行けるようにしておけば、ページャはシンプルでよいかもしれません。


更新履歴をシンプルに表示

更新作業を後から確認しやすくする、という話。wikiやgithubだと充実していますね。管理画面にあると嬉しい機能だと思いました。PHPには、array_diffなど配列を処理する関数が多数あるので、配列をDBにシリアライズして保存しておく、というのが良いらしいです。

warningログを残す

処理に時間がかかったり、メモリを消費したりした場合に、ログを残す。アプリケーションが落ちる前に、事前に知ることができます。そうすれば確かに対処しやすいですね。これは取り入れたいと思います。

こっそりリリース

元の管理画面を残して、新しい管理画面を作ってチェックし、問題がなさそうなら新しい管理画面を使用する。この方法は私も取り入れています。新しい管理画面でトラブルが起きても、業務へ影響しないのが嬉しいです。


会場に余裕ができた

ここ数年はWordCampと併催でした。一日でPHPとWordPressの両方のセッションを見ると大変でしたし、会場スペース的にも余裕がなかったように思います。今年はPHPカンファレンス単独開催となったので、会場に余裕ができました。大ホールではメインプロジェクタだけでなくサブのプロジェクタも用意されていて、後ろのほうの席でもスライド資料が見やすかったです。

これだけの規模のカンファレンスを毎年運営できるというのは凄いことですね。スタッフの皆様ありがとうございます。

記事公開日: 2015年10月13日
#

PHP5.6系は、2016年末でアクティブサポートが終了、2018年末... 詳細はこちら

ブラックリストでの検証は、より広い範囲でのホワイトリスト(... 詳細はこちら

Nagoya.PHP 第12回に参加しました。会場はカルテットコミュニ... 詳細はこちら