十の並列した脳

何でも勉強する,毎週月木曜に投稿予定

「プロになるためのWeb技術入門」まとめと感想 #3

 

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

 

前回↓

 

ryosuke-okubo.hatenablog.com

 

 

 

#3ではLesson6とLesson7について扱う。特にLesson6以降は理解が追いついていないところがあるので,概観程度にとどめたことをお断りしておく。

 

Lesson6

ロジックとデザインの分離

サーブレット/JSP詳細については省略する。ポイントとして,「ロジックとデザインの分離」に基づいた構築であることはおさえておく。ざっくり言えば,ロジックはシステムでデザインは画面を指しているといえる。サーブレット/JSPにおいては,サーブレットがロジック,JSPがデザインを担当している。

 

MVCモデル

Webアプリケーションのアーキテクチャの一種であるMVCモデルは,アプリケーションを以下の3つの役割に分担して作られる。

  • モデル(Model:処理とそれに関する情報の保持 例 ログイン処理
  • ビュー(View:画面表示 例 JSPビュー(View):画面表示 例 JSP
  • コントローラ(Controller:画面からの情報入力とモデルの呼び出しおよびビューの呼び出し 例 サーブレット

f:id:ryosuke_okubo:20190128182831p:plain

図1 MVCモデル

MVCモデルでは以下のような処理の流れをたどる。

  1. Webブラウザからリクエストを送信,コントローラが受け取る
  2. 入力情報を処理するモデルを呼び出し,各パラメータを渡す
  3. モデルにて,受け取ったパラメータを元に処理を行い,結果をコントローラに返す
  4. 結果を元にコントローラは画面を選択して,そのビューを呼び出す
  5. ビューはモデルを参照して表示すべき情報を取り出す
  6. 結果をHTMLとして出力してWebブラウザに返す

 

 

フレームワーク

要は「型」のことである。本では自動車における基本骨格に例えられている。以後,StrutsiBATISというフレームワークを例に説明されるが,ここでは省略する。フレームワークを使うことのメリットとデメリットをまとめておく。

メリット デメリット
設計・開発工数の削減 学習コストの増大
品質の向上 設計における自由度の低下
テスト工数の削減 長期的な技術力の低下

 

 

Lesson7

Webアプリケーションの攻撃手法と対策

ここでは本に記載されているものについて簡単にまとめておく。

 

SQLインジェクション

手法:入力インターフェースを利用してデータベースに発行されるSQLを変更することで,情報の不正取得や改竄を行う

対策:入力値のチェック,プリペアード・ステートメントの利用

 

クロスサイトスクリプティングXSS

手法:HTMLの中に悪意ある動作をするJavaScriptを埋め込む

対策:サニタイジング

 

セッションハイジャック

手法:セッションIDを第三者が盗む

対策:XSS対策,通信経路の暗号化,セッション・タイムアウト値の変更,セッションIDのランダム化

 

クロスサイトリクエストフォージェリCSRF

手法:捏造したフォームから強制的に情報をサブミットする

対策:ワンタイムトークンの使用

 

強制ブラウズ

手法:WebブラウザのアドレスバーにURLを直接入力する

対策:状態をチェックさせるような設計

 

ディレクトリトラバーサル

手法:../を利用してディレクトリを遡ることでアクセスする

対策:拡張子をシステム側で付与させる(ただしヌルバイトに弱い)。

 

以下の書籍などに詳細がふれられている。

 

 

まとめ 

少なくとも本書のレベルは,アプリケーションを実装する人でなくてもそれに関わる業界にいるのであれば必須であると感じた。フレームワークを用いたアプリケーション実装にはもう少し理論的な勉強が必要かもしれない。

 

(終)