Webを支える技術


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を乗っ取られる可能性があるとかないとかっていう脆弱性らしく・・・