PHPカンファレンス2010スペシャルレポート

2日目,テックデイレポート[随時更新]

この記事を読むのに必要な時間:およそ 7.5 分

徳丸浩さん「文字コードに起因する脆弱性とその対策」

HASHコンサルティング株式会社の徳丸さんによる,文字コード(文字エンコーディング)の取り扱いが原因で生じる脆弱性についての講演です。

文字エンコーディングの不用意な扱いで起こるセキュリティホールのデモを6種類実演しながら,その原因と対策を説明してくれました。⁠現場で『こんなことは起こりえないだろう』と言われたら負けだ,というのが私のポリシー」と言う徳丸さんは,実際にあってもおかしくないような環境設定で起こるXSS脆弱性やSQLインジェクションのデモを,次から次へと披露してくれました。

6種のデモを原因別に分類すると,

  • 文字エンコーディングとして不正なデータによる攻撃
  • 文字エンコーディングとして不正でなく,マルチバイト文字対策が不十分なもの
  • 文字集合の変更が原因のもの

の3つになるという説明でした。⁠UTF-8を使っていればそうそうおかしなことにはならない」とはいうものの,事情により他の文字エンコーディングを使わなければならない人にとっては,背筋が寒くなりつつも大変有用な講演でした。

画像

画像

hnwさん「PHPストリーム概説」

続いて,日頃から個人ブログhnwの日記で非常に濃いPHPネタを書かれている株式会社ディノ hnw さんからの発表です。 Web+DB PRESS でもPHPの連載をされているそうです。次号で「ストリームとファイル入出力」が掲載されるそうです。こちらも要チェックですね。

PHPのあまり知られていない機能として「ストリーム」のおはなしです。 ストリームとは「外部データに対するI/Oを透過的に扱うもの」とのことで,簡単にいうと「何でもファイルのように扱える」ということです。 PHP 4.3.0 から導入されている,比較的古い機能といえます。

ストリームの各機能について,UNIX のコマンドラインに例えての解説がありました。

  • ストリーム : 標準入出力
  • ストリームラッパー : UNIXコマンド
  • ストリームコンテキスト : コマンドラインオプション
  • ストリームフィルタ : フィルタコマンド

ストリームラッパーやストリームフィルタなどは,組み込みで用意されているもののほか,自分で作成することも可能です。もちろん,PHPで記述できます。

例として,Openpear で公開されている Stream_Filter_Mbstringの紹介がありました。ストリームをつかって,ファイルの文字コードを変換しつつ読み込める機能を実現できます。Shift_JISではうまく動作しない fgetcsv などで有効です。

「PHPの割に綺麗で実用的」というストリームを詳しく解説頂きました。

筆者もストリームはとても好きな機能です。賢く使うととても便利な機能なので,みなさんもぜひお試しください!

画像

画像

rtiさん「新潟アクセス修飾子のご提案」

「⁠にいがた』を漢字で書いてください」新潟』を読んでください」⁠新潟は読めるけど書けない」で始まる発表に会場は戸惑います。続いて,⁠クラスのアクセス修飾子はなぜpublic,protected,privateしかないのか。読めるけど書けない修飾子が私は欲しい」として,⁠読めるけど書けない,新しい修飾子niigataを作ろう。public,protected,private,niigata」と会場の爆笑を誘います。

後半は,実際にPHPのソースを改造して,niigata修飾子を実装していく様子が順を追って説明されました。改造時のお約束は「似ている箇所を探す」⁠エラーメッセージは最大のヒント」⁠とにかくgrep」とのことで,privateメンバに書き込みをしてエラーを出し,そのメッセージでgrepして改造箇所のあたりをつけ,該当場所を探り当てる様子に会場は引き込まれました。

「言語の改造は面白い。難しくない。niigataは7~8時間で実装できた。この資料作成に2日かかったけど」と言うrtiさん。⁠魔改造をやって遊びましょう。プログラム言語の新しい可能性を探しましょう!」という聴衆への呼びかけで,講演を締めくくってくれました。

画像

画像

著者プロフィール

佐藤佳祐(さとうけいすけ)

株式会社オトバンク ウェブ配信事業部 開発チーム所属。北海道出身。nequalというエンジニアグループでOpenpearの開発を担当。最近はLOCALの活動が気になって仕方がない。

URLhttp://riaf.jp / twitter:riaf


春原宏保(すのはらひろやす)

長野市在住。最近はC++とDelphiばかりで,PHPからは遠ざかっている。あちこちの勉強会やカンファレンス,セミナーへ参加しては議事録を執筆し,ブログに公開するのが趣味。

URLhttp://d.hatena.ne.jp/suno88// twitter:suno88


藤本洋一(ふじもとよういち)

株式会社BeProud所属。

会社でもnequalでも毎日コードしか書いてません。最近はPythonでDjangoで生活を楽しく面白くする何かをつくってます。

URLhttp://wozozo.jp/ / twitter:wozozo


ヤガー

エンジニアブロガーとして個人ブログCreazy!にPHPやJavaScriptのTipsを更新する傍ら,ツイポーートTwitGIFなどPHPで開発したWEBサービスを多数運営している。

現在は絶賛求職中。

URLhttp://creazy.net/ / twitter:yager

コメント

コメントの記入