日本→シンガポール→ベルリンへと流れ着いたソフトウェアエンジニアのブログこの広告は、90日以上更新していないブログに表示しています。プログラミング移転しました。Tweetopen-uriってちゃんと実装しないとなにかと危険な香りがしますな、という話。"open-uri"として使っていたとする。フォームから受け取ったパラメータを入れてopen(なんやら)とする場合、そのままなんでもopen()の中に入れるとかなり危険。これはフォームに入れたURLにしたがって、そのウェブサイトに行ってなんか取ってくる例。コードで言うとこんな感じ。endendおそらくこんなセキュリティー開きっぱなしな実装はしないと思うが、これをハックしてみるとこうなる。Rubyの場合、パイプを渡せばそのまま外部コマンドが実行できる。ls結果がこれちゃんとlsコマンドの結果としてGemfileやらが見えてますな。ハッカー達がlsコマンドの結果を見ただけで立ち去る、なんてお行儀がいい訳ない。コマンドが実行できると分かればアレもこれもやられことは想像に難くない。そこで対策としてparamsをチェックしましょう、と。意味はAを実行してエラーが出た場合にだけBを実行しなさい、という意味。言うまでもなくコマンドの意図はhttp....は単なるURL風の見せかけで/etc/passwdを見せなさい、と。見事に/etc/passwdが見えたりして香ばしい。別にopen-uriがダメなライブラリと言いたい訳ではない。要はどんなライブラリでもその使い次第ということで十分気をつけましょう、と。以前にこういうハッカー的なテクニックを使ったパズルを作ろうと考えていて、結果的にできたパズルがこれ。tango-ruby.hatenablog.comご登録いただいた解答者数がやっと5300を超えたあたりか。伸ばす方法ないのかなー。EntriesブログをGatsbyの独自ドメインに移行しました「ウェブサービスで1発当てる」なんて言ってないで、誰かを笑顔にするサービス作りに専念する目標にお金を賭けて楽しく達成するウェブサイトを作った。その開発経緯とか有名レストランである映画監督と出逢い、自信がいかに大切で今の私にはそれが無いことを痛感したプッとくる名言サイトを作った「プログラミングはセックスのようなもの。レビューズがじわじわキテるので経過報告はてなブログにある映画の感想を人工知能で集めてウェブサイトを作ったProfileid:tango_ruby日本→シンガポール→ベルリンへと流れ着き、現在ベルリンのIT系スタートアップで働くソフトウェアエンジニア(妻と娘2人持ち、イボ痔持ち)海外転職のメール相談の回答がわりと時間割かれてつらかったので有料化しました。詳しくはAboutページをご確認ください。