OSC2008に参加してきました

 OSC2008 Hokkaidoに行ってきました。
 ここ4年ほどは毎年参加していますが、今年も有意義な時間を過ごせたと思います。
 私が参加したのは以下の講義です。

  1. Ruby/Rails セキュリティハンズオン
    あまりRailsを使えているとは言えないですが、自サイトをリプレースする場合にセキュリティを考慮に入れたかったので。
  2. Ruby勉強会@札幌 特別編
    個人的に請けるWeb関連の仕事はRubyしか考えてないですし、色々と状況を知っておくことは励みになるかなと。
  3. 異端のWebフレームワークSeaside
    異端のフレームワークという名称に惹かれました。
  4. ネットワークの自由、その現状とこれから
    セキュリティも大きく絡むので、ネットワーク関連の状況は是非とも知っておきたいところです。
  5. Eclipseのお話
    仕事でも個人的にもEclipseを使う機会は非常に増えましたので。


では、簡単ですが感想を書きます。

Ruby/Rails セキュリティハンズオン

 講義は札幌のRubyistとしてはおなじみの島田さんです。
 前半はRailsの入門を請ける人と出来合いの脆弱性の検出を試みる人で分かれることになってましたが、さすがに今更入門を受けても仕方ないので、脆弱性の検出を試みることにしました。


 用意された攻撃対象であるtodoアプリの脆弱性を検出し、時間があれば修正も行う、といったものでしたが、正直言って初めての体験でした。


 とりあえず書いてある通りにサーバを起動しようとしたら起動はするけど、接続できず、何で?と思ったらtelnet接続で起動しているのにも関わらず、ドメインlocalhostと書いてあるのに気づき、端末のタイトルに表示されているIPを打ってようやく接続・・・多分ここまでで20分くらいはかかったかもしれません。恥ずかしい。


 で、ソースを見ようとしたのですが、viしかなく、しかも何故かきちんとスクロールできなくて、ウィンドウの高さをいじったらようやくきちんとスクロール表示されるようになりました。こういう環境自体、あまりなじみが無かったので戸惑いの連続でしたが、ようやくここで落ち着きました。


 攻撃に関しては、ソースを見る限りセキュリティ対策は何一つ実施していないようにも見えたので、とりあえずXSSをするためにscriptタグを埋め込んでtodoを登録し、実行されることを確認。


 次にSQLインジェクションを狙うため、フォームの値を直接findメソッドの条件に使っている、検索窓にSQLを埋め込んでエラーなく実行できた時点でやめました。案外簡単に攻撃できるものです。


 その後は、Railsが1.2系だったのでCSRF攻撃をできないか考えてましたが、端末PCにスクリプト実行環境が無いので、どうやったら可能かを考えあぐねていたらタイムアップしてしまいました。


 後半はRailsアプリを作成した場合の脆弱性とその対策でした。覚えている範囲で要約すると、以下です。

  • 情報見えを防ぐため、Railsが持つテンプレートファイルの独自化をする
  • テーブルの制御系属性への不正アクセスにはattr_protect,attr_accessibleを用いる
  • XSSにはh,sanitizeメソッド、検証にはsafe_erbを使う
  • SQLインジェクションプレースホルダと名前付けハッシュを使えば防げる
  • CSRFはRails2.0系で元から実装されている


 あと少しあったと思いますが、こんなところです。
 Railsはセキュリティ向けの仕組みもよくできているということがよくわかりました。
 早速自分のサイトも見直していきたいと思います。

Ruby勉強会@札幌 特別編

 最初は、島田さん、次にしだらさんのお話。
 内容は主にRubyKaigi2008とjpmobileについてでしたが、面白かったです。
 jpmobile携帯電話キャリアごとの違いを吸収してくれるのはありがたい限りですし、他にも色々あるようなので、これから使っていこうと思います。

異端のWebフレームワークSeaside

 squek-jaの梅沢さんと言う方の講義です。
 今でのWebフレームワークの常識である、

  • 状態の不保持
  • 意味のあるURL
  • モデルと表示を分離するためのテンプレート

を無視し、

  • 「継続」による状態の保持
  • URLに意味を持たせることにこだわらない
  • ページではなくコンポーネント単位で管理

といった感じで、オブジェクト指向を一貫させる、というかなり革新的な改変を狙った説明がまずなされました。


 その後デモをされたのですが、かなり衝撃的で、見ている間、口が半開きのままでした。
 ブラウザにキャッシュされてもURLで状態を覚えているため、簡単にもとの状態からユーザの操作を受け付けられるという「継続」そのものも面白いですが、保持している状態やソースをあっさりと書き換えても再デプロイや再起動なしで確認できたりなど、デバッグ機能が非常に興味深かったです。


 質疑応答で話されていた、継続の使いすぎによる性能劣化は結構ネックになりそうですが、継続はビューを一枚しかもてない携帯電話ブラウザには有効なように思います。

ネットワークの自由、その現状とこれから

 MIAUの津田さんが、MIAUの紹介と、ネット規制の歴史と現状を語られました。
 正直言って割りと興味が薄い分野でしたが、それなりにためになったと思います。
ただ、OSCなので、もう少しOSSと絡めた話しがあるとありがたかったです。


 要するに、インターネットを前提にした世界でのクリエイター、著作権者、ユーザの三すくみの均衡を保ちつつ拡大するか、という観点で、現実に生じた偏った見方にどう対処していくか、といった問題提起と解釈しました。

Eclipseのお話

 NECソフトの森さんが、Eclipseの現状とEclipseCon、日本語化についてお話してくれました。
 Eclipseの出来の良さを考えると、運営は非常に参考になりますが、利用者共通の利益になるL10Nを一社に頼っていたのは、むしろよく破綻しなかったと思います。翻訳するコミュニティはしんどいでしょうが、必ず益があるので頑張っていただきたいですね。


 3.4でRubyIDEが入るらしいですが、NetBeansの使い勝手を超えられないと普及はしないような気がします。Eclipseは改変しやすい分、特化したものを超えるのは難しくなりそう。
 あと、部屋の広さの割りにマイクが無かったので、声を拾うのが大変でした。あの大きさだとマイクは必須かと。

まとめ

 今年の会場は部屋割がわかりにくかったですが、部屋の広さに余裕があり、楽に聞けました。内容も充実してましたし、来年も楽しみです。