カテゴリー: Computer

もうバージョンアップで困らない – PROVE for PHP

昨年のPHPカンファレンスで紹介したPORVE for PHP 開発版の公開を始めました。PROVE for PHPはこんなテストが出来ます。

  • PHPをアップデートしてアプリに影響が無い事を検証する
  • PHPアプリをアップデートしても以前と同じように動作する事を検証する

使い方もとても簡単です。

  • テストケースの作成はブラウザからアプリを利用するだけ
  • ロードバランサを用いて実運用サーバからのテストケースも作成可能
  • テストの実行はプログラムを実行するだけ
  • 違いが在った場所はプログラムの何処か確実&簡単に判明

http://www.provephp.com/

もっと読む

error: unable to index file – 初めてのGitエラー

Gitを使っていて初めてエラーらしいエラーに合いました。検索してもコレという物がヒットしなかったので書きます。

error: unable to index file aaa
fatal: updating files failed

などと出るエラーですが

  • 既にファイルとしてコミットしているパスを、ディレクトリにしてコミットしようとする

と出るエラーのようです。簡単に再現します。

(git version 1.7.3.3)

[yohgaki@dev git-test]$ git init .
Initialized empty Git repository in /home/yohgaki/tmp/git-test/.git/
[yohgaki@dev git-test]$ touch aaa
[yohgaki@dev git-test]$ git add aaa
[yohgaki@dev git-test]$ git commit -m 'add' .
[master (root-commit) ff6f5d2] add
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 aaa
[yohgaki@dev git-test]$ rm aaa
rm: remove 通常の空ファイル `aaa'? y
[yohgaki@dev git-test]$ mkdir aaa
[yohgaki@dev git-test]$ touch aaa/bbb
[yohgaki@dev git-test]$ git add aaa/
[yohgaki@dev git-test]$ git commit -m 'add dir' .
error: unable to index file aaa
fatal: updating files failed

他のケースでも出るようですが私の場合はこれでした。コミットしたいディレクトリに移動してコミットすればコミットできましたが、私の場合は何か他の問題(?)もあったようでdetachした状態となったのでマージして直しました。

[yohgaki@dev git-test]$ git commit -m 'add dir' .
error: unable to index file aaa
fatal: updating files failed
[yohgaki@dev git-test]$ cd aaa/
[yohgaki@dev aaa]$ git commit -m 'commit dir' .
[master 5b63843] commit dir
 1 files changed, 0 insertions(+), 0 deletions(-)
 rename aaa => aaa/bbb (100%)
[yohgaki@dev aaa]$ cd ..
[yohgaki@dev git-test]$ git branch
* master

 

phpのescapeshellcmdの余計なお世話を無くすパッチ

徳丸さんのブログでescapeshellcmdの余計なお世話の件が指摘されていたのでパッチを作りました。これmagic quoteと同じレベルの余計なお世話なのですが放置されています。個人的にはどのような関数にも全てバリデーション済みの文字列しか渡さないのでセキュリティ問題は発生しないのですが、UNIX系OSではペアとなる”と’はエスケープしない仕様に気が付いていないプログラマも多いかもしれません。

もっと読む

php – 短縮URLを一行で展開する

perl – 短縮URLを一行で展開する

という記事があったのでPHPでやるとどうかなと作ってみた。(と言うほどの物ではありませんけど)本当に一行にするには無理があったのでの実際には2行です。他に良い方法があるかな?

$ php -r '$h=get_headers($argv[1], 1);echo $h["Location"];' http://j.mp/dankogai

専用関数があるので面白くもなんともありませんね。

 

PAGERの設定でgitのANSIエスケープシークエンスが…

私の環境では、PAGER=’lv’ としていたのでMac OSXのターミナルでgit diff とかするとANSIエスケープシーケンスが正しく処理されない。GIT_PARGER環境変数を以下のように修正した。

export GIT_PAGER=’/opt/local/bin/lv -c’

これはMacportsのlv(マルチバイト文字も正しく表示できるテキストビューアー)ですが、普通のlessを使っている人は

export GIT_PAGER=’/usr/bin/less -R’

でカラー表示になると思います。

 

 

OSX 10.6でPHPソースのbuildconfが実行できない

Mac OSX 10.6のPHPはPHP5.3なのでPHP5.2をビルドしてインストールしたい、と思っている方も多いと思います。Macportsが入っていれば、

sudo port install php52 php52-web

のような感じでPHP5.2をインストールできます。Portsじゃなくてソースから、そしてPECLなど他のモジュールもロードするのではなくスタティックに組み込みたい!という場合もあるでしょう。いちいちモジュールディレクトリを作ってphp.iniでロールするのは面倒ですから当然です。
もっと読む

Mac OSX 10.6のAquaemacsでバックスラッシュ(\)がUnicodeの円記号(¥)になる

Mac上でEmacsを使うと言っても、コードを見るくらいでAquaemacsを使っています。Aquaemacs 2.0以上からはタブも使えてかなり便利です。今は2.1を使っています。PHP、RubyはEclipseやNetBeansを使っています。

Aquaemacsでコーディングはしていなかったので今まで困らなかったのですが、PHP本体のコーディングとビルドをMac上で出来るようにしました。Cのコードは普通はEmacsで書いているので、AquaemacsでCのコードをコーディングしようと思ったら「バックスラッシュ(\)が円記号(¥)になる」現象で困ってしまいました。
もっと読む

オープンセミナー2010@岡山 5/15開催

毎年恒例のオープンセミナーのお知らせです。Rubyの松本さん、PGClusterの三谷さんをはじめ聴きごたえのある講師が揃いました。お昼はお弁当を持ってくるか注文する方が良いです。懇親会は70名になっていますが、既に予約が多すぎたので50から70名に増やしたばかりです。申し込みはお早めにどうぞ。

申し込み用のページ
http://kokucheese.com/event/index/1834/

セミナー告知ページ
http://openseminar.okaya.ma/

もっと読む

広島オープンセミナー 11/28(土曜)

広島で中四国で行われている地域コミュニティが合同で行っているオープンセミナーが11/28(土曜)開催されます。

http://www.postgresql.jp/events/5e835cf630aa30fc30f330bb30df30ca30fc-1/view

ご都合が良い方は是非参加ください。

 

 

来る11月28日(土)に(株)SRA西日本会議室(Pルーム)にて
JPUG中国支部主催のオープンセミナーを開催します。
今回はオープンラボ岡山の協力を得、RubyやAndroidの話題も盛り込んでいます。
また、東京から桑村潤氏、石井達夫氏にお越しいただきますので、
興味のある方は是非ご参加ください。

セミナー、懇親会に参加を希望される方は、人数把握のため、三谷(mitani@sraw.co.jp)までメールでお申し込みください。

1.日時:2009年11月28日(土)13時から17時
(開場受付 12:30〜、懇親会 18:00-20:00)
2.場所:(株)SRA西日本 会議室(Pルーム)
広島市南区稲荷町 2-16 広島稲荷町第一生命ビル 10F
http://www.sraw.co.jp/map_hiroshima.html
3.定員:30名
4.会費:無料(懇親会は別途費用)
5.プログラム
13:00-13:25 三谷さん:PostgreSQLのClustering最新動向
13:30-13:55 吉田さん:RubyとPostgreSQLの全文検索 
14:00-14:25 英吉さん:Android Marketの理想と現実
14:30-14:55 大垣さん:SQLインジェクション
15:00-15:50 桑村さん:PL/Proxy,PgBouncerの紹介
16:00-16:50 石井さん:pgpool-II最新情報

 

 

OSC Tokyo – 今更聞けないSQLインジェクションの現実と対策

明日のOSC東京Fallでは「SQLインジェクション”ゼロ”のPostgreSQL利用法 – 今更聞けないSQLインジェク ションの現実と対策」と題したセッションを日本PostgreSQLユーザ会の講師として話をさせて頂きます。

SQLインジェクションはとうの昔に枯れた話題と思われていますが、古くても今の問題です。何年か前、日本PostgreSQLユーザ会のセミナーで手作業でのブラインドSQLインジェクションのデモをした事がありますが今回はツールを使ったデモもあります。書いている間に当初作ろうと思っていたプレゼンとは異なる物なってしまいました。多少紹介から期待する内容とは異なっているかも知れません。既にSQLインジェクションについては十分知っている方でも、それなりに(?)楽しめる内容になっていると思います。おかげ様で満員だそうですが、飛び込みでも少しは入れるのかな?

45分なのに60枚もスライドがある上、デモもあります。かなりハイペースで話すことになります。ネットで直ぐに見つかるような基本的な事はあまり書かなかったのですが、無いようで書くとSQLインジェクションについて色々在る物です。多少スライドは飛ばす事になります。

ほぼ同じ内容でOSC高知でも話をさせて頂く予定です。
来たくても来れなかった方は是非高知でお会いしましょう。

Git+SSH+マルチユーザ

本格的にSubversionからGitへの移行を行った際に作ったGit+SSHサーバの手順をWikiに書きました。この手順を実行すると

  • SSHの公開鍵を持っているユーザにのみリポジトリへのアクセスを許可
  • 複数あるリポジトリへのアクセス許可を個別に設定
  • グループを設定して「読み込み」「書き込み」の権限を管理

ができるようになります。

詳しくはWikiのgit sshサーバの構築をご覧下さい。

Subversionの頃はWebDAV+SSL+Basic認証だったので以前と比べればかなり認証の安全性は増したと言えます。

PHPが文字エンコーディング攻撃に強い理由 – HTMLエスケープ

PHPが文字エンコーディング攻撃に比較的強い理由は入出力の文字エンコーディングのバリデーション(サニタイズ)が行えるだけではありません。PHPが提供するHTMLエスケープ関数が文字エンコーディング攻撃に対して強い事も理由の一つです。

PerlでHTMLエスケープと言えば、<,>,&,”,’をエンティティ変換するコードが一番に見つかります。

「perl html escape」でググると一番に見つかったページは次のページです。このページではまだ3バイトEUCの場合の例、CGIモジュールを使った例も載っているので良い方でしょう。

http://saboten009.blogspot.com/2008/04/perlhtml-xss.html

少し前にPerl, Ruby,Pythonユーザは検索で有用なセキュリティ情報を得られるのか?と疑問に思い調べました。これだけ知っていれば取り合えず十分というページはそう簡単には見つかりませんでした。

いつも問題になるのは PHP だけど Perl は問題ないのか、すでに議論し尽くされた問題なのか、PHPer のモラルが低いせいか。

Perl,Ruby, Pythonで議論し尽くされ対策が浸透している、とは到底思えません。Railsで文字エンコーディングを利用したXSS脆弱性が話題になっていることからも明らかです。PHPがいつも問題になるのはよく使われていて、初心者も多く、公開されているWebアプリも圧倒的に多いからです。モラルの問題ではありませんし、このページで紹介されているPerlのエスケープ方法だけではPHPのhtmlentities()やhtmlspecialchars()よりも脆弱です。文字エンコーディングを考慮するようになっていないからです。 もっと読む