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

Published: 2016年2月28日 by tomsato

◼︎ 概要

「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チェックリストがあるのでこれだけでも凄く価値があるのかと思います

 

API

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧