「Web API: The Good Parts」読書メモ 5章~6章

◼︎ 目次

  1. 概要
  2. 本について
  3. 5章
  4. 6章
  5. 終わりに

◼︎ 概要

「Web API: The Good Parts」読書メモ 1章~2章
「Web API: The Good Parts」読書メモ 3章~4章
の続きになります
ようやく読み終わったので気になったところをメモ程度にまとめます

◼︎ 本について

水野貴明著「Web API: The Good Parts」(オライリー・ジャパン発行)

Amazon or オライリー・ジャパン公式サイトにて販売中

◼︎ 5章

目次

  1. 設計変更をしやすいWeb APIを作る
    1. 設計変更のしやすさの重要性
    2. APIをバージョンで管理する
    3. バージョンを変える際の指針
    4. APIの提供を終了する
    5. オーケストレーション層

気になったところ

  • APIをバージョン管理する方法
    • バージョン変更時は全く異なるURIで公開する
    • URIのパスにバージョンを埋め込む
    • クエリ文字列にバージョンを記述する
    • メディアタイプでバージョンを指定する
  • バージョンアップ
    • 基本は後方互換性を保って同じバージョンでのマイナーバージョンアップで対応する
    • 後方互換性を保たなくても良い例
      • セキュリティ関連の方針変更
      • 権限などの方針変更
  • API廃止
    • 継続的な告知が必要
    • TwitterはBlackout Test(一時的にAPIを止める)を何度か行っていた
    • 公開終了時は410 (Gone)を返す
    • サポート期間を明記する

◼︎ 6章

目次

  1. 堅牢なWeb APIを作る
    1. Web APIを安全にする
    2. サーバとクライアントの間での情報の不正入手
    3. ブラウザでアクセスするAPIにおける問題
    4. 悪意あるアクセスへの対策を考える
    5. セキュリティ関係のHTTPヘッダ
    6. 大量アクセスへの対策

気になったところ

  • セキュリティ問題
    • サーバとクライアントの間での情報の不正入手
    • サーバの脆弱性による情報の不正入手や改ざん
    • ブラウザからのアクセスを想定しているAPIにおける問題
  • HTTPSにおける対応
  • セッションハイジャック
    • セッションを乗っ取ってユーザになりすますこと
  • 攻撃手法
    • XSS
      • 他人のWebサイトへ、悪意のあるスクリプトを埋め込む
        • cookieを盗み取る
        • 入力を促すフォームを他人のWebサイトに埋め込んで個人情報入手
    • XSRF
      • ユーザがA(悪)サイトにアクセスした時に、あらかじめ用意された不正なリクエストをB(攻撃対象)に送る
        • 掲示板に勝ってに投稿
      • 実際にユーザがやったわけではないが誤認逮捕される場合がある
    • JSONハイジャック
      • JSONを使用したサイトにログイン中のユーザが、悪意あるサイトにアクセスすると通信中のJSONデータを盗まれる
  • セキュリティ関係のHTTPヘッダ
    • X-Content-Type-Options
    • X-XSS-Protection
    • X-Frame-Options
    • Content-Security-Policy
    • Strict-Transport-Security
    • Public-Key-Pins
    • Set-Cookie
  • レートリミット
    • 単位時間あたりの最大アクセス回数
    • レートリミットを決め、それ以上のアクセスがあった場合はエラーを返す
    • 実装は面倒
      • RedisなどのKVS
  • API公開をサポートしてくれるサービス
    • Apigee
    • 3SCALE

◼︎ 終わりに

この本ではWeb APIについて設計する立場になって色々学んでいましたが、使う立場にも活かせるような気がします。例えばstatus codeやContent-typeについて意識する必要があることがわかったりAPIでusersがあるんだったらusers/:idがあるんじゃないかと予想してドキュメントを探すようにもなるのかなと考えています。
設計についても命名規則の大事さからバージョンアップのノウハウとあまり考えたことが無かったセキュリティについてなど幅広く話題が掘り下げられてとても面白かったと思います

またツールの紹介についてもちょいちょいされていてApigeeだったり(APIコンソールを使ってTwitterやGitHubのAPIを手軽に動作確認できるらしい)、Api Bluepoint(MarkdownでAPIの定義して、AglioでドキュメントをHTMLで表示してくれる)とか探せば色々なAPIをサポートするツールがあるので知っているのと知らないのでは全然違うのかなと思いました

最後の付録にWeb APIチェックリストがあるのでこれだけでも凄く価値があるのかと思います

 


Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です