Webを支える技術
本書を読んだ目的
業務でPUTメソッドについて調べていて、ググっただけでは納得できる情報がなかったので
本書を購入し読みました。
ですので、知りたかった情報を中心に記載しようと思います。
冒頭の良い言葉
冒頭に良いこと書いてます。
シンプルさは究極の洗練である。
----- Leonardo da Vinci
Webの特徴を一言で言い表すならば、シンプルさに尽きる
第1部 Web概論
Webを支える技術はHTTP、URI、HTML
REST
アーキテクチャスタイル
スタイルに合わせてRESTを構成する
スタイル | 説明 |
---|---|
クライアント / サーバ | ユーザインタフェースと処理を分離する |
ステートレスサーバ | サーバ側でアプリケーション状態を持たない |
キャッシュ | クライアントとサーバの通信回数と量を減らす |
統一インターフェース | インタフェースを固定する |
階層化システム | システムを階層に分離する |
コードオンデマンド | プログラムをクライアントにダウンロードして 実行する |
第2部 URI
http://blog.example.jp/entries/1
項目 | 内容 |
---|---|
URI | http |
スキーム | blog.example.jp |
パス | /entries/1 |
http://blog.example.jp:8000/search?q=test&debug=true#n10
項目 | 内容 |
---|---|
URIスキーム | http |
ユーザー情報 | yohei:pass |
ホスト名 | blog.example.jp |
ポート番号 | 8000 |
パス | /search |
クエリパラメータ | q=test&debug=true |
URIフラグメント | #n10 |
第3部 HTTP
HTTPはTCP/IPをベースとしたプロトコル
RFC2616
HTTP 基本
階層 | プロトコル |
---|---|
アプリケーション層 | HTTP、NTP、SSH、SMTP、DNS |
トランスポート層 | UDP、TCP |
インターネット層 | IP |
ネットワークインタフェース層 | イーサネット |
HTTPメソッド
メソッド | 意味 |
---|---|
GET | リソース取得 |
POST | 子リソース作成、リソースへのデータの追加、そのほかの処理 |
PUT | リソース更新、リソース作成 |
DELETE | リソースの削除 |
HEAD | リソースのヘッダ(メタデータ)の取得 |
OPTIONS | リソースがサポートしているメソッドの取得 |
TRACE | 自分宛にリクエストメッセージを返す(ループバック)試験 |
CONNECT | プロキシ動作のトンネル接続への変更 |
CRUD
GET、POST、PUT、DELETEでCRUD
CRUD名 | 意味 | メソッド |
---|---|---|
Create | 作成 | POST/PUT |
Read | 読み込み | GET |
Update | 更新 | PUT |
Delete | 削除 | DELETE |
PUT
リソースの更新
リソースの作成
POSTとPUTの使い分け
複数のリソースを作成する場合はPOST、1つのリソースを作成する場合はPUTっていう覚え方してます。
第4部 ハイパーメディアフォーマット
第5部 Webサービスの設計
調査結果
Ajaxの通信際にPUTメソッドを使っていて、PUTメソッドは脆弱性があるから、POSTに実装し直してくださいってことで
この本でHTTPメソッドのことを勉強しました。
でも、原因はHTTPではなく、WebDAV経由で外部からアクセスされた際にHTTPから継承しているPUTメソッドを使って
リソースの更新を行い、OSを乗っ取られる可能性があるとかないとかっていう脆弱性らしく・・・