FC2ブログ

簡単ログイン

ヤマト運輸の簡単ログインでユーザ情報が丸見えだった件。

かねてより高木浩光氏が警鐘を鳴らしていたとおり、簡単ログインの脆弱性があらわになった。
新聞記事等ではあたかもiPhoneが悪いとか、ソフトウェアが悪いような書き方になっているが、ヤマト運輸自身が認めるとおり、これはシステム構想時点での勘違いが原因である。

携帯電話のUDIDはキャリアのゲートウェイを経由して初めて意味があるものであるのは周知の事であって、今更何をというもので。
まぁ百歩譲って、なんちゃってWeb-SIerがちゃちゃっとやっちまいました、みたいなものなら現在でもヤマほどあるだろう。
そんなに大した情報じゃないしな、と割りきってるところもあったり。
ところがそれを業務のシステムがやっちまっちゃぁだめでしょう。

事が公になってからの対応は、さすがヤマトという高評価が多く、それはそれでたいしたもんだと思うけれども。

とかなんとか言っててもセキュリティ畑は専門ではないんで、深い話はできないんだけどね。
でも、それだからこそ高木氏のとことかあちこち情報拾う作業はやってるわけで、専門じゃないけど理屈はわかってる、つもり。

あぁそうさ、すぐ忘れちゃうんだけどさっ
スポンサーサイト

empathyでhotmailログイン不可

いつからなのか解らないが、Ubuntu10.04のempathyでhotmailアカウントのみログインに失敗するようになった。
たまに接続したりもするのでサーバのメンテかなと思っていたが、そのうち全くログインできなくなった。
あれこれ探すとそれらしいQAがちらほらと。
$sudo apt-get remove telepathy-butterfly
とした後、
empathyを再起動。
編集~アカウントからMSNアカウントを一旦削除して再度設定しなおし。

あらま何事もなく繋がるようになりましたとさ。

再帰SQLで階層構造取得

PostgreSQLで再帰ができたところで、データの階層構造を順序づけて取得を試みる。

MSN相談箱での質問
http://questionbox.jp.msn.com/qa6255721.html

こんなテーブルがあったとして、
pgsql_recursive_01


これに対して、この辺を参考にして、
with recursive rec(id, name, parent, path) as(
select id, name, parent, array[id]
from testtable
where parent = 0
union all
select b.id, b.name, b.parent, a.path || b.id
from rec a Join testtable b
on a.id = b.parent)
select id, name, parent, path, array_upper(path, 1) as LV
from rec order by path;

こんな書き方をしてみると、あら不思議、ちゃんと期待したレベル構造に順序づけられるじゃぁありませんか。
pgsql_recursive_02

ちうか、arrayとかonとか使ったことないけど、いろいろできるもんすね。

再帰SQL

8.2だった我が家のPostgreSQLもようやっと9.0に上げ、遅ればせながら待望のSQL99が使える環境に相成りまして、
永らく慣れ親しんだFROM句でのサブクエリーとも別れを告げる時がやって参りました。

その名のとおりSQL99だから、10年の歳月を経てようやく、という感じなのだけれど、
業務系のシステムでは統計以外では殆ど使われる事もなく。
というか、COBOL風な横並びテーブルでは使う術もなく。
恥ずかしげもなくフィールド名に、
DATA_01, DATA_02, DATA_03... , DATA_98
とかつけて、ご丁寧に”繰り返し項目”とか書いてくれちゃってるようなのが大手を振っていて、
さらに”DBアクセス部品”とか名づけて、SELECT * だけしか使わせないとか、あり得ない状況が現実だったりするわけなんだけれど、それはそれとして現実を見つめ直すためにw

でもってSQL99で何ができるかってぇと、
WITH句によるサブクエリの分離ができる。
込み入ってネストしたクエリで、あちこちに同じサブクエリを書いた経験が誰もがあるんじゃないかとおもうんだが、これがWITH句で定義するだけで、後方のあちこちで参照できるという、なんという優れもの。
さらに、
これまで固有の言語処理に委ねていたり、CONNECT BYで無理やりやっていた再帰がなんと楽ちんにできちゃったりする。

無限ループの危険をはらむ再帰SQLなので、すぐに業務でどうこうっていうものでもないだろうが、
同一テーブル内での参照を含むDB設計とかができるわけで、ちょっとワクテカ中。
#select * from testtable;
id parent name
1 0 AAA
2 1 BBB
3 2 CCC

#WITH RECURSIVE r AS (
SELECT * FROM testtable WHERE id = 2
UNION ALL
SELECT testtable.* FROM testtable, r WHERE testtable.parent = r.id
)
SELECT * FROM r ORDER BY id;

id parent name
2 1 BBB
3 2 CCC

完璧じゃー

さて何しよ...

Eat A Peach

Eat A Peach Deluxe Edition

秋晴れの日はイージー・ライダーな香りがぷんぷんするオールマンで。

プロフィール

f_yamaki

Author:f_yamaki

アクセスカウンタ
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム

この人とブロともになる

ブログ内検索
RSSフィード
リンク