犬ターネット

Archive : 2011年09月

サイトのtitle変えた

'>"><xmp>(0ω0) にした。それだけ


t.coなどから本当のURLを取り出す方法 を PHP で

Geekなぺーじ : t.coなどから本当のURLを取り出す方法

PHPだと以下みたいにヘッダ取得してLocation:~の有無で確認できる。

あーPHP書きたいよー楽したいよー


日経BPパスポート、ほんとにパスワードそのまま送ってきやがった

日経BPパスポートにパスワードわかんないんだけどっていう問い合わせしたらパスワードベタ書きしたメール送ってきた。

日経BPパスポート、ほんとにパスワードそのまま送ってきやがった

アホか。


ここまで画像なし

さっきアメブロにアップロードした画像は削除されずにずっと残ってるよという話をしたんだけど、他の画像系サービスはどうなのかなーと思ってとりあえず以下について調べてみた。

instagr.am
twitpic.com
yfrog.com
f.hatena.ne.jp
flickr.com

使った画像はこれ。アップロード → 削除 → パーマリンクと画像直リンクが削除されてるかどうか、をチェック。

instagr.am

パーマリンクは消えるが、画像直リンクは残る。→ ちゃんと消えてた

yfrog.com

→ 削除されるがタイムラグあり

twitpic.com

→ 削除されるがタイムラグあり

f.hatena.ne.jp

→ 即時削除される

flicker.com

→ 即時削除される

instagr.am 以外はちゃんと削除されるってことがわかった。

基本設計として削除したらちゃんと削除されなきゃいけないわけだし削除されなかったらユーザを裏切ってることになるわけだしまったくアメブロとinstagr.amはサービスとしてどうなんだろうと思った。

あと、lockerz.com も試したかったんだけど、webUI からだとすごく分かりにくいしちゃんと動かないしログアウトできないし。なんだこれ...


アメブロについて

青山学院大学の女子学生が中年男性との不倫を実名で自慢、不倫相手や家族の顔と名前も公開中

という話が話題になってたので、件のアメブロ見にいったんだけど、やはり記事が全削除されてる。

http://ameblo.jp/0204os/

でも、アメブロの運営方針だかなんだかしらないけど、退会しても記事削除しても残ってしまうものが存在する。それが以下の全文feedのURL。

http://feedblog.ameba.jp/rss/ameblo/ユーザID/rss20.xml

ためしにこのURLに不倫自慢さんのユーザID当て込むと、確かに閲覧できる。

http://feedblog.ameba.jp/rss/ameblo/0204os/rss20.xml

最大10件までしか表示されないけど、削除したはずなのに見えちゃうってのはこわい。

もしアメブロ退会したくなったら、意味のないエントリー10個書いてから退会したほうがいい。

---- 追記 ----

画像も削除したつもりでもキャッシュサーバには残っちゃう仕様みたい。

http://ameblo.jp/0204os/imagelist.html

には何もないように見えるんだけど、以下みたいに検索してみるとヒットするし、閲覧も可能。

http://www.google.co.jp/search?q=http%3A%2F%2Fstat.ameba.jp%2Fuser_images%2F*%2F0204os%2F*

時間がたてば削除されるのかもしれないけどどうなんだろうか。

アメブロに画像アップするときは外部フォトサービス使って連携させたほうがよさそう。


特定ディレクトリ配下にファイルが作成されたら別のディレクトリに移動させる

ということをやりたい場合、inotifywait っていうファイル監視コマンドが使えそう。とりあえず手元の centOS で試してみる。

まずは inotify-tools を yum でインストール。

$ yum install inotify-tools

んで、こういう watch.sh ていうシェルスクリプト書いた。/unko/from/ を監視して、ファイルが作成されたら /unko/to/ に移動って感じ。

#!/bin/sh
from=/unko/from/
to=/unko/to/
inotifywait --format "%f" -mq -e create $from | while read file; do
  mv -f $from$file $to$file
  echo "[moved] $from$file -> $to$file"
done

さっそくターミナルから watch.sh を起動。

$ chmod 700 watch.sh
$ ./watch.sh

別ターミナル開いて /unko/from/ にファイル作ってみる。

$ touch /unko/from/aaa
$ touch /unko/from/bbb
$ touch /unko/from/ccc

元のターミナルに戻るとデバッグ用メッセージでてる。おお、いいんじゃないの。

$ ./watch.sh
[moved] /unko/from/aaa -> /unko/to/aaa
[moved] /unko/from/bbb -> /unko/to/bbb
[moved] /unko/from/ccc -> /unko/to/ccc

ほんとにファイル移動されてるか tree で確認。オッケー。

$ tree /unko/
/unko/
|-- from
`-- to
    |-- aaa
    |-- bbb
    `-- ccc

2 directories, 3 files

スラッシュ2つ+ドメイン+パス

とあるソース見てたら別ドメインのjsをこういう風に読み込んでいた。

<script type="text/javascript" src="//exdomain.example.com/script.js"></script>

手元のブラウザで http ⇔ https 切り替えてアクセスしてみたけど、ちゃんと別ドメインのjsも http ⇔ https 切り替わって読み込まれてる。だからIEでみても例の「セキュリティで保護された Web ページ コンテンツのみを表示しますか?」ていう警告はでない。

今までだったら javascript で location.protocol みて動的にプロトコル変えて js 埋め込んでいたと思う。アクセス解析用のjs埋め込みとかでよく使われてるやりかた。でも上の書き方だったらそんな処理いらない...便利...

# でもこれありなのかな... バッドノウハウ臭する...おれが知らなかっただけ?うーん、どうなんだろ...


mgngの建もの探訪 ~ ツバメスタジオ編

ということでツバメスタジオに行ってきました。それもこれもインターネットのおかげですほんとうにありがとうございます。

---------

ツバメスタジオの中はこんな感じです、内装ほぼ手作りだそうです。

gajiの名作「9pmatgfm」のレコーディングで使われた例の円盤です(つうか棒にしか見えない、角度がわるかった)。
当時の君島さんの説明:「人間の頭に模した12インチくらいの円盤の両側中央に無指向性のマイクを、両耳みたいな格好で2本立てます。optimal stereo signal 方式という名前がついてます。」

君島さんがgajiで弾いてたあの超レアギターみせてもらいました。Kalamazooっていう69年のGibson製らしいです。君島さんカラマズー弾くの図。

スタジオにはいろいろな機材が散らばってまして、無造作にメロトロンがおいてあったり。現物初めて見た。

ツバメスタジオで使ってるメインのレコーダーだそうです。BeOS に RADAR という組み合わせ、多分これ使ってるの全国でもツバメスタジオだけじゃなかろうかということです。とにかく音がいいらしいです。

んで、その横にはオープンリールの年期はいってそうなMTRがどどんと(これも初めて見た)

おみやげに元TORICOの方が作られているZINE二冊頂きました。君島さんのインタビューとコラムが載ってます。超おもしろかった。

他にもいろいろここでは言えないようなお話きいたり近くのチンコ屋っていう中華料理屋でラーメン食べたり、充実した一日でした、君島さんありがとうございました。


web廃墟

ホームページが全盛だった10年くらい前、アツい地下音楽を紹介していた「嗚呼、ハードコア人生。」というサイトがあって、この「嗚呼、ハードコア人生。」の管理人、にこ姉さんは、趣味が高じて(?)、自身で「marrow bits」というレーベルを持つようになって、ライブ企画したり、音源を発売したり、個人運営としてはかなりの優良サイトだったんだけど、今朝方 marrow bits を開いてみたらドメイン失効していた。

http://www.marrowbits.com/

サイト運営にはパワーが必要だし、ましてや一人で全部まわそうとすると必ずどこかに綻びが出てくるし、運営者だって人間だ、病気したりプライベートでいろいろあったりするけど、こうして一時代を築いたサイトが閉鎖されていくのを見るにつけやるせない気持ちになってゆく。


簡易XSSチェック

XSSとはクロスサイトスクリプティングの略で、web業界に身を置く人なら必ず耳にする言葉。

XSSの何がヤバイっていろいろヤバイけど、最悪人が死ぬ。冗談ではなく。

んで、おれがwebサービス作ったときにいつもやってる簡易XSSチェックをかいておく。

  • フォームのテキストボックス、プルダウン、ラジオボタン、hidden等に '>"><xmp> を埋め込む
  • ?aaa=xxx&bbb=yyy といったクエリストリングにも ?aaa='>"><xmp>&bbb='>"><xmp> を埋め込む

要は、自分が入力できそうなところ全てに '>"><xmp> を埋め込む。

これの何が便利かっていうと、

  • 入力値をそのままSQLに埋め込んでると '>" あたりでエラー ⇒ SQLインジェクションの可能性あり
  • 入力値をそのまま画面に出力してると <xmp> が解釈されて画面ぶっ壊れる ⇒ XSSの可能性あり

のようにXSSとSQLインジェクションのチェックが一回でできる。

ちなみに <xmp> っていうのはソース中のタグとかスペースとか全部そのまま表示する特殊なタグで(※HTML4.0で廃止されてるけどまだまだ現役)、たとえば

うんこ
ちんちん

を<xmp>タグで囲うとこうなる。

<div style="color:red;">うんこ</div>
<div style="color:cyan;">ちんちん</div>

なので、脆弱性対策できてないサイトで '>"><xmp> を埋め込むと、SQLエラーが表示されたり画面ぶっ壊れてソース丸見えになるからすぐわかる。

もちろん、脆弱性の種類や手法は他にもたくさんあるんだけど、最低限 '>"><xmp> というマジックワードを覚えておくと便利。


ライフハック

「月3万円ビジネス」で生計を立てる方法

面白いこと書いてるのかもしれないけど、こういう「ライフハック」系ブログって生理的にうけつけないんだ。書いてる人のドヤ顔(という単語は嫌い)がネットワーク越しに透けてみえるようで。「あはーん?おれ今いいこと書いてるべ?」みたいな。

おれがインターネットに求めるのは音楽とオカルトとうんことあとなんだ、ええと、要は、楽しいことしか求めていないのだ!たのしいことのためなら無償でプログラムも書くしホットケーキも焼く!

あとビールのみたい!ついでに100万円ほしい!


twitterログインできなくなってた件

さっき twitter にアクセスしたら勝手にログアウトされてた。

クッキー消えちゃったのかな、と思って再ログインしようとしたらいくらやってもログインできない。なんだこれ。

ふとメールチェックしたら twitter 運営からメールきてた。

mgngさん、こんにちは。
Twitter と連携していないサービスやウェブサイトによって、あなたのアカウントが乗っ取られている危険性が高いと判断いたしました。本人以外からのアカウントへのアクセスを防ぐために、あなたのアカウントのパスワードをリセットさせていただきましたので、ご報告いたします。

調べてみたら、スパム踏んでDM送ったり、ほんとにアカウント乗っ取られると、パスワードリセット + 上記のメールが届くらしい。

特にDMに異常はないし、勝手につぶやかれた形跡もない...いや、あったわ。

https://twitter.com/#!/mgng/status/114139089644695553
はい!RT : へこむわ~ #unko

これ、自分で設定したbot投稿なんだけど...なんかまたパスワードリセットされそうだなあ...

--------

でもパスワードリセットされてても、OAuth の access_token と access_token_secret はそのまま生き続ける。

要は、OAuth使ってるクライアントであれば、パスワードリセットされようがそのまま操作できる。それはそれでなんか問題になりそうだけど。

access_token と access_token_secret 再発行したほうがよさそう。


一般論として

Web開発は速度重視、とはいえ、セキュリティ監査したかどうかも怪しいサービスをほいほいリリースして、バグがあったら「いやーβ版なんで~すみませ~ん」で逃げる流れどうにかしたい。なんかあってからじゃ相当遅い。

超基本的なこととして、テキスト入力できそうな箇所やクエリパラメータには「'>"><xmp>」って入力して動作確認をしている。


PHP互換性調査

仕事で使ってるサーバが新しくなり、PHPのバージョンも変わるとのことで、changeLog みて互換性調査しようとしたんだけど量が多すぎて嫌になったので、該当しそうな部分だけ抜き取るスクリプトをPHPで書いた。

changeLogのページが素直な構成だったので、file で配列に読み込んでグルグル回して Upgraded、Updated、Added、Change、Removed、Allowed あたりをキーワードに抜いた。

で、結果がこれ。それでも結構ある...


24時間切った

あと23時間で納品しなきゃなんないんだけどお客さん行方不明だし仕様きまってないし仕様きまったとしても内容によってはガラっと方向転換しなきゃならなくてなにこれしぬのねむいはらへった焼肉食べたい100万円ほしいほんげー

とりあえずtwitterでもします。

--- 1時間後 ---
















































納品延期になったじゃねえかばかやろう

とりあえずfacebookでもします。


utf-8なJSON文字列をPHPとPerlで扱うメモ

PHPの場合。

Perlの場合。ちょっと面倒...

それと、こういう階層のJSONを扱う場合、

{
  "status":200,
  "data":[
    {"id":1, "name":"mgng" },
    {"id":2, "name":"mgng2"}
  ]
}

PHPだと素直に書けるんだけど、

Perlも同じように処理すると「Pseudo-hashes are deprecated」エラーが出る(JSON モジュールのバージョンは 2.17)

decode失敗してんのかな...ためしに Data::Dumper使って $data[0] を見てみると、

[
  {
    'name' => 'mgng',
    'id' => 1
  },
  {
    'name' => 'mgng2',
    'id' => 2
  }
]

ぬぬ、なんかもういっこ配列でくくられてる... ということで、こうしたら無事表示された。

JSONモジュールのバグなのか仕様なのかは調べてないけど、[0][0]キモい...


右翼メモ

キャプテン右翼

タッキー&右翼

益若 右翼

右翼をください

B'z ~ 永遠の右翼

MISIA ~ 約束の右翼

コブクロ ~ 君という名の右翼

中村あゆみ ~ 右翼の折れたエンジェル

スネオヘアー ~ 冬の右翼

レミオロメン ~ 右翼


プログレッシブ

SoftBankガラケー端末で表示されないjpeg画像があって、ファイル形式調べたら「プログレッシブJPEG」だった。形式を「ベースラインJPEG」に変更したら無事表示された。

docomo, au だと問題なく表示されてたから危うくスルーするところだった。あぶないあぶない。あたりまえだけど実機で検証するの大事...

んで、プログレッシブJPEGとベースラインJPEGの相互変換はフォトショですんなりできるんだけど貧乏なおれはそんなの持ってないので手元の CentOS に入ってた jpegtran っていうコマンドを使った。

プログレッシブ→ベースライン変換は以下。

$ jpegtran progressive.jpg > baseline.jpg

ベースライン→プログレッシブ変換は -progressive をつければいい。

$ jpegtran -progressive baseline.jpg > progressive.jpg

ついでに、画像を最適化するには -copy none でファイル内メタ情報を削除、-optimize で最適化を行えばいい。

$ jpegtran -copy none -optimize src.jpg > dst.jpg

ちなみに、プログレッシブとベースラインのどちらを採用するかは(ちょっと古いけど)以下に考察されている。

JPEGをプログレッシブにするかどうかの分かれ目は10KB

(ていうか、jpeg なんかとっとと捨てて png 使おうよ...)


休日

少し寝坊して朝食を食べ髪を切りにいき昼飯買って帰って食べ食料の買い出しに行き夕飯は外食ですませ風呂に入り娘寝かしつけツイッターとfacebook見ながらGoogleReaderのfeedを消化して気になる記事はブックマーク&tumblrにポストしてたらもうこの時間ですおやすみなさいグッナイ!