📖
【記録】Web技術の基本
1-8:動的ページの仕組み
- CGI(Common Gateway Interface):WebサーバーがWebブラウザからの要求に応じてプログラムを起動させるための仕組み
- サーバーサイドスクリプト:CGIから呼び出されるプログラム
- クライアントサイドスクリプト:HTMLに埋め込まれ、Webブラウザによって読み込まれる際に実行されるプログラム
1-10:Webの設計思想
- RESTfulなシステムのメリット
- 以前の情報を保持する必要がない(ステートレス性)
- 一意なURL(アドレス可能性)
- 別の情報をリンク可能(接続性)
- セマンティックWeb
- Webページの情報に意味(セマンティック)をつけたもの
- 情報に関する情報(メタデータ)が埋め込まれる
2-4:IPアドレスとポート番号
- ポート番号の利用用途
- 0~1023:Well-knownポート:一般的なサーバーソフトウェアで使用
- 1024~49151:Registeredポート:メーカー独自のサーバーソフトウェアで使用
- 49152~65535:クライアント側で自由に使用可能
3-4:ステータスコード
- 1xx:Information
- 2xx:Success
- 3xx:Redirection
- 4xx:Client Error
- 5xx:Server Error
3-7:HTTP/1.1のやり取り
- HTTPキープアライブ:コネクションの継続利用
- HTTPパイプライン:複数のHTTPリクエスト送信
3-8:HTTP/2のやり取り
- ストリーム:ブラウザとサーバーの間で確立された1つのコネクション上に生成される仮想的な通信経路
- HTTPパイプラインではHTTPリクエストの順番通りにHTTPレスポンスを返す必要があるが、ストリームによる多重化では各ストリームが独立してリクエストやレスポンスをやり取りできるため高速・効率的なデータのやり取りが可能
3-10:HTTPSの仕組み
- 盗聴防止:データの暗号化
- 改ざん防止:メッセージダイジェストを利用してあるデータのハッシュ値を計算し、データの送受信時にハッシュ値を比較して改ざんを検知
- なりすまし防止:SSLサーバー証明書によるWebサイト運用元の確認
3-13:Cookie
- サイトの状態を保持し、管理するためのデータ
- セッションCookie:ブラウザが閉じられると同時に削除される有効期限が設定されていないCookie
3-14:セッション
- 一連の関連性のある処理の流れ
- CookieにセッションIDを含めて処理を実行することでサーバーとのセッションを維持
5-1:Webアプリケーションの3層構造
- プレゼンテーション層(Webブラウザ、Webサーバー):UI部分
- アプリケーション層(APサーバー):命令実行
- データ層(DBサーバー):データ処理
5-2:MVCモデル
- アプリケーション層とデータ層の内部の役割分割
5-9:Ajax
- Webブラウザ上で動くJavaScriptが通信を行うため、JavaScriptの機能を使った非同期通信が可能
- レスポンスに左右されない箇所のHTMLを更新したり、ユーザーからの入力を受け付けることが可能
- 例えば、入力中の検索候補のサジェスト機能に使用されている
5-12:マッシュアップ
- Web APIを利用して複数のサービスを組み合わせて新しいWebサービスを開発すること
6-4:Webアプリケーションの脆弱性を狙う攻撃
- クロスサイトスクリプティング:脆弱性のあるWebページを介してスクリプトがユーザーのWebブラウザに送り込まれ、クライアントサイドスクリプトとして実行される
- クロスサイトリクエストフォージェリ:脆弱性のあるWebページに対して操作を行うリンクを表示し、ユーザーがログインを実行するとクライアントサイドスクリプトが実行され、本人になりすましてログインの必要なサイトを操作する
- SQLインジェクション:情報の正誤判定で必ず正しいと判断されるような語句を埋め込み、DBに意図しない動作を行わせる
6-7:IDS,IPS
- ファイアーウォールで防ぎきれない攻撃を防ぐ手段
- IDS(Intrusion Detection System):異常があったことをシステム管理者に通知するだけ
- IPS(Intrusion Prevention System):通知だけでなく、通信の遮断も行う
- IDS, IPSの不正アクセス検知方法
- シグネチャ型(不正検知型):監視対象の通信とシグネチャ(基地の攻撃手法における通信パターンが登録されたデータベース)を比較し、パターンに一致する通信を不正アクセスとして判断
- アノマリー型(異常検知型):アクセス量の急増など、普段の通信とは大きく異なる通信を不正アクセスと判断
6-8:WAF
- パケットの中身を見て悪意のあるデータが含まれていないかをチェック
- ファイアウォールやIDS, IPSで防げない攻撃を防ぐため
6-11:認証
- ID、パスワードによる本人確認
6-12:認可
- ユーザーごとの権限に従って利用可能サービスの判定
- OAuth:サイトをまたいだ認可を実現するために標準化されたプロトコル
- 利用元のサービス(クライアント)が利用したいサービス(リソース)に対してトークンの発行を要求し、発行されたトークンを提示してリソースを利用
6-13:CAPTCHA
- プログラムを用いたWebサービスの悪用を防ぐために考案されたテスト
7-2:利用言語、ソフトウェアの検討
- ミドルウェア:OSとアプリケーションの中間に位置するプログラム
- Webサーバー
- Apache
- nginx
- IIS
- etc...
- APサーバー
- Tomcat
- JBoss
- IIS
- etc...
- DBMS
- Oracle
- MySQL
- SQL Server
- etc...
- Webサーバー
7-6:負荷分散
- ラウンドロビン方式:各サーバーにリクエストを順番に割り振る
- 動的分散方式:負荷が少ないサーバーに優先してリクエストを割り振る
- パーシステンス:リクエストの送信元を判別し、同一クライアントからのリクエストを常に同じサーバーに転送
Discussion