jtwp470’s blog

日記とかプヨグヤミングとか

pixivのインターンに行ってバグと戦ってきた

こんにちは.たんごです.去る12/12, 13はpixivでバグ取りインターンに参加していました.

f:id:jtwp470:20151217152629j:plain

recruit.pixiv.net

このインターンシップに参加するためにはまず事前課題を解きそれをGitHubのプルリクエストを使って提出するというなかなかない形式のものでした.

事前課題

github.com

GitHubにあるこの課題を解きました.PHPで書かれていましたが比較的読みやすく分かりやすかったのですがPHP7の入ったVagrantパッケージがなかなか降ってこなかったため自前でUbuntuのVagrantパッケージを作成しその中に環境を整えて課題に取り組みました.PHPを使うにはApacheやNginxといったものにPHP FPMなどを使って構成するのが当たり前だと思っていたのですがphp -Sというコマンドを使えばそのようなものを使わずともサーバーとして動いてくれるのは知らずびっくりしました.

そんなこんなでコードを読んでいくと以下の様なバグをすぐ見つけることが出来ました.

こんな綺麗なコードを書けるんだから脆弱性残すなよって感じです.まぁまぁな時間をかけて提出締め切りの1日前くらいにプルリクエストを送りました.

解いて思いましたがWebセキュリティの基礎として徳丸本を読んでいても実際に手を動かさないと知識は身につかないと思います.私自身CSRFの脆弱性については知識は持っていましたがどのように実装すれば脆弱性を回避できるのかなど詳細を知りませんでしたが今回の課題を通しきちんと理解することもでき勉強にもなると思います.もしWebセキュリティに興味のある人がいればこの課題を解いてみるのも良いかもしれません.

インターン

最初に参加者とメンターで自己紹介を1分で行うというのがありました.メンターさんが最初の自己紹介で「好きなLispは...」と言い始めたのがきっかけでみんなLispを取り上げたり好きなエディタや言語などを好き好きに行っていたので非常に面白かったです.また参加者にはVimmerもEmacserもいましたが戦争を起こすこともなくみんな仲良かったですw

さて,当日はpixivの前日12:00頃スナップショットを撮った本当のソースコードにあるバグと戦いました.参加するまでは意図的に混入させたりそういう擬似的なもののコード内にあるバグ取りをするものだと思っていたので本物のコードを触るとは思っても見ませんでした.バグ自体は15個程度あり,簡単なものから2日間ではまず解けないだろうとメンターさんがおっしゃるレベルのものまで取り揃えられていました.私は全部で5個ほど解決しましたがすべて簡単なものだったのでまだまだ精進が足りないなぁといった感じです.また私は手こずっていたためプルリクが取り込まれるのも遅くマージされることはありませんでしたが他のインターン生の速く出したものがサービスに取り込まれるそうなので羨ましいです.このインターンで学んだことは何事も早い者勝ちということです.社会は厳しいですね.

環境

環境自体は開発サーバーにSSHでログインしてpixiv社内からアクセスできるという仕組みでした.以下の記事がめっちゃ詳しいです.

inside.pixiv.net

基本的にはリモートサーバー上にあるファイルをいじらないといけないので私はEmacsのtramp-modeを使っていました.(Emacs最高!) もし来年以降参加する方がいればSSH経由でファイルを編集できる環境を構築しておくと捗ると思います!

あとオフィス環境もめちゃくちゃ良かったです.フリードリンク,フリー味噌汁でしたw

f:id:jtwp470:20151217152533j:plain

pixiv名物絵馬 f:id:jtwp470:20151217152621j:plainf:id:jtwp470:20151217152638j:plain

最高ですね.私も2次元に囲まれて仕事したいです.

感想

楽しかったです.(ゴミ日本語力) メンターさんや他のインターン生のレベルも高く刺激されました.自分にはまだ足りないことも見つかりましたしこれからも精進していきたいと思います.

あとめっちゃどうでもいいですが自分がGitHubにログインしている時だけpixivに所属しているふうに表示されるのが嬉しいです.

f:id:jtwp470:20151217154331p:plain