こんにちは!CTOのはせがわです。
今年1月に、ラムダノートさんから「Webブラウザセキュリティ」という本が出版されました。
- 米内貴志 著
- 224ページ
- A5判
- ISBN:978-4-908686-10-8
- 2021年1月5日 第1版第1刷 発行
昨秋、著者の米内貴志(つばめ)さんにお願いされてこの本のレビューを行ったこともあり、出版記念ということで同じくレビュアーだったにしむねあさん、キヌガワマサトさんもお招きして4人でこの本やWeb技術周辺についてワイワイと話をしましたので、2回に分けてその模様をお届けします!
レビュー楽しかったですね!

みなさんお忙しいのに呼びつけてすみません。
会社でエンジニアブログを書かないといけないんだけど書くためのネタが全くなくて、ちょっとみなさんの力を使って書こうかなと。

みんな、はせがわさんに言われるとNoとは言えないくらい統制されてますから大丈夫です。

また~。そういうの文字起こしすると誤解されちゃうじゃないですか。

ちゃんとそういう関係性を文字にして残しておかないと。

Webセキュリティ界隈って、上下関係が厳しいんだなっていうことがわかるように、ちゃんと文字に残してもらわないと。

(全力で頷く)

ちょっとw
えっと、本題に入れない。っていうか本題なんだっけ。そうそう、つばめの書いた本の話。
この本、レビューの話が来たじゃないですか。
レビューとかなかなか時間とれなくて正直しんどいなと思ってたんですよ。けどやってよかったなと思いますよ。

おもしろかったですよ、レビュー自体も。

そうおっしゃって頂けるのがめちゃくちゃうれしかったです。
書いてて、見せて「これブラウザハックのパクリじゃん」って言われたらどうしようかなと思いつつ。
ブラウザハックとの違い

俺たちの監訳したブラウザハックよりも、立派な表紙で作りやがって…、とかね。

ははは、たしかに、ブラウザハックの表紙よりは書き込みも多いかもしれないですね

あちこち誤記訂正も少なそうだしね。

ブラウザハックはもうちょっと具体的な攻撃方法、こうするとできますよみたいなのが多いですよね

今回は作る側の本ですよね。ブラウザーにはこういう技術があるから、ちゃんと理解して安全なアプリを作ろうね、って開発者に訴えかけてる。

そうですね!

ブラウザハックより売れるんじゃないですか

なんですぐそうやって売り上げ、お金の話になっちゃうんですか
今日は技術の話じゃなくお金の話だけしますか?

にしむねあさんがいたらどうしてもお金の話になってしまうよね。パンのレビューから成りあがった男だから。
話をもどして、この本がいいなと思ったのは、「はじめに」のところでなぜこの本がいるのかの立ち位置を明確にしてる、あれがすごくいいなと思って。
ブラウザハックは書きたくて書いたっていう趣味の本という向きが強くて、たしかに勉強にはなるけどどういう人が読む本なんだろってのがあって。
けどこの「Webブラウザセキュリティ」は「こういうために書いてます」ってのが明確になっていて、体系化して書かれてるのがわかるので、「はじめに」を読んだ時点でこれは良さそうな本だって思えるんですよね。まるで「はじめに」しか読んでないみたいな感想ですけど。

人に薦めやすい本だと思いますよ。

いやー、ありがたいですね(満面の笑み)

キヌガワさん、薦める人周りにいます?

いや、今はいないですね…。セキュリティキャンプとかやってる時なら、事前に読む本として薦める気がしますね

めちゃめちゃ嬉しいですね。僕今日ずっとここでニヤニヤしてればいい役割ですか?褒められてニヤニヤしながら「ありがとうございます」だけ言っておけばいいですかね
レビュー振り返り

これ、レビュー開始するときに、他に誰がレビューするって聞いてなかったじゃないですか

そう、たしかにお願いするときに誰と誰がレビューするってお互いには伝えてなくて。

そう、で、(Google Drive上で)レビューしてる途中にぱっとみたらにしむねあさんからのコメントが入り始めたのに気づいたので、にしむねあさんがいるのなら、もう細かなところはオレ見なくていいやって思って。スペックに沿ってないとかつづりを間違えてるとかはきっと俺より細かく気付いてくれるだろうって思ってみるのをやめた笑

自分はそのために呼ばれたんだろなと思って、細かく見てました。「はせがわさん、ここ見落としてちゃ駄目だぞ」なんて思いながら指摘してたんですが、そのあとキヌガワさんがレビューに入ってきて、今度は自分が見落とした間違いをたくさん指摘してくれていて。

いやー、レビューがバグハンターでしたよね、完璧に。

細かな尻ぬぐいを全部キヌガワさんがして回ってるみたいなレビューコメントになってましたね

いやいやいや、にしむねあさんが重要なところはほとんど全部指摘してたので、あとは細かなところを僕が見るだけで。

けっこう気づいて当然みたいなところをキヌガワさんが後から拾ってるのを見るとめっちゃ悔しいよね

あったあった

ありました?

CSPの話でなんだったかのディレクティブの数字が違うとか

linkタグのなかでhrefじゃなくsrcとか書いてるやつとか

いやーでもあれ書いてるときは気づかないものですね。

でもあれ確か、スペックから引用してきて、スペックが間違えてたとかもありましたよね。

自分が目からウロコだったのは、1 章にある HTTP リクエストの概要の部分ですね。
HTTP リクエストはヘッダーとボディにより構成されます、という記述があって、自分は違和感なく読み飛ばしていたんですけど、キヌガワさんから、「最初の POST で始まる行はヘッダーではなく『リクエストライン』です」ってコメントが付いていて。

そう、確かにそうで、「知らんかった!」ってなりましたね

ちょっと違和感を覚えてw

あとおもしろかったのは占いの話ね

あれ面白かったですね。日本人と思われるキヌガワマサトさんに占いの話を突っ込まれるっていう

いやー、でもあれ一番わざわざコメントするか迷ったところだったんですけど、 ブログにも一番心に残ったって書いてあったので、何が心に残るかわからんなぁって思った

いや、でも全体に、マジでみなさん中身ちゃんと読んでくださったんだって思って。ソースコードとかそれこそsyntacticに文脈の理解はできるじゃないですか。けどソースコードの中、上に載っているデータまでちゃんと見られるんだって思って印象的でしたね。
もちろん他のコメントもひとつひとつが自分にはめちゃくちゃ勉強になるって思ったけど、やっぱり占いのが記憶には残りました。
本の内容は…


ありがとうございます!

Jxckさん*2がよく「点と点をつないで線にしたら見えるものがある」みたいなかっこいいこと言ってるじゃないですか

かっこいいですよね、あれ

それがまさにこの本なのかなと思って。
CSPから始まる一連のcross-origin系のヘッダーとかって、点の話はたくさんあるじゃないですか。これを設定するとこうなります、みたいな解説とか。この本は、それが何を意味しているのか、それぞれをつなぐことで何を守ろうとしているのか、なぜそれが出てきたのかみたいなのが整理されているのは大きいですよね

たしかにそうですよね
この対策をしたけど、まだこういったリスクが白地として残っているから、新しいヘッダーが出たんだよっていう形で、順を追って説明されているので。

まさにそのへんがやりたかったんですよね

レビューしながら思ったのは、けっこう長い時間かけてこれを書いたんだろうなと。
その間に Web の仕様やブラウザーの実装も数週間置きにバージョンアップして、セキュリティ周りの仕様もどんどん強化されているから、書いてる中で時代が変わっちゃっているものも出てきている。
例えば、 `target=_blank`で`window.open` したら `noopener` が暗黙的に指定される時代だよ、とか。

ありましたね

林さん*3からコメントついてたのは、そろそろFlashについて書くときはブラウザーから消えてる技術だから注釈をつけてあげたほうがいいとか

時代ですよねほんとに

本が出た時はもうFlash終わってましたもんね

いやー、そんな日がすぐに来るとは思ってなかったですよ
本が出るときにちょうど消えたので、林さんからコメントもらってなかったら、本が出た時点で古い話になってましたよ。

たしかCSPのバイパスでFlashを使った攻撃みたいなの書いてあったと思うんですけど、もはやそれいらなくなっちゃったですよね

まさに、書いてる最中に古くなるみたいなの。
もともとあの原稿って2019年のセキュリティキャンプのために書いたのがベースになってるんですけど、そのときに書いたCookie周りの話とかって、当時からそれこそsamesiteに関しての仕様やドキュメントが増えてsamesite=laxがデフォルトになるみたいなちょうどそういう時期くらいに書いたものだったので、実際脱稿するまでにかなり大幅に書き替えたりもしてて。かなり、まさにWebだなって気がしましたね

プライバシー周りがいちばん動きがあるじゃないですか。
CNAMEクローキング対策とかプライバシーサンドボックスの話とか。
あそこの章はほんとに数か月単位で新しいものが書き足せるような領域で、どのタイミングで書くかほんとに難しいですよね

そうですよね、実際かなり迷いました。
それこそすでに書いた部分でも新しくなってるからもうちょっと書きたいっていうのが混在してしまっていて。
まあでも最終的には、今の時点のスナップショットがとれて、かつ、アカデミックな文献だったりスペックに関する議論が落ち着いてる部分に関しては、スナップショットをとることにも価値があるだろうっていう気持ちであのあたりは今の記述に留めていて。
だから、例えばプライバシーサンドボックス周りは個人的にはまだあの本に載せるべきじゃないかなとか、逆にこの領域の話は載せるべきかなとか、考えながら書いたんですよね。スナップショットとして今どこが適切か、みたいなのを。

第二版、第三版で加筆して、儲ける算段ができましたね

ちょっとラムダノートさんの宣伝になっちゃうんですけど、ラムダノートさんから出る書籍って、新しく刷り直すタイミングで内容を書き替えたりとか追記したりとかが、けっこう盛んにやられているんですよね。
変化の速いWeb周りの本を出すにはありがたい出版社さんだなぁと思って。
ラムダノートさんの宣伝になっちゃいますけど、この部分は出版社さんへの感謝を込めてちゃんと文字起こししてくださいね

ラムダノートさんへのリンク先のドメイン名間違るとか、そういうの気を付けますね。

少しずつ、これ落ち着いたなっていうところで書きたい部分もあるんですよね。Feature Policyとかも書いてないし。それ以外にも書いてないのいくつかあるし、そういうのを少しずつ盛り込んでいけたらなと思っています、これから。増刷とか改定のタイミングで。

いいですね。
次回に続きます!