「プロになるためのWeb技術入門」まとめと感想 #3
「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
- 作者: 小森裕介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/10
- メディア: 大型本
- 購入: 57人 クリック: 1,242回
- この商品を含むブログ (35件) を見る
前回↓
#3ではLesson6とLesson7について扱う。特にLesson6以降は理解が追いついていないところがあるので,概観程度にとどめたことをお断りしておく。
Lesson6
ロジックとデザインの分離
サーブレット/JSPの詳細については省略する。ポイントとして,「ロジックとデザインの分離」に基づいた構築であることはおさえておく。ざっくり言えば,ロジックはシステムでデザインは画面を指しているといえる。サーブレット/JSPにおいては,サーブレットがロジック,JSPがデザインを担当している。
MVCモデル
Webアプリケーションのアーキテクチャの一種であるMVCモデルは,アプリケーションを以下の3つの役割に分担して作られる。
- モデル(Model):処理とそれに関する情報の保持 例 ログイン処理
- ビュー(View):画面表示 例 JSPビュー(View):画面表示 例 JSP
- コントローラ(Controller):画面からの情報入力とモデルの呼び出しおよびビューの呼び出し 例 サーブレット
MVCモデルでは以下のような処理の流れをたどる。
- Webブラウザからリクエストを送信,コントローラが受け取る
- 入力情報を処理するモデルを呼び出し,各パラメータを渡す
- モデルにて,受け取ったパラメータを元に処理を行い,結果をコントローラに返す
- 結果を元にコントローラは画面を選択して,そのビューを呼び出す
- ビューはモデルを参照して表示すべき情報を取り出す
- 結果をHTMLとして出力してWebブラウザに返す
フレームワーク
要は「型」のことである。本では自動車における基本骨格に例えられている。以後,StrutsやiBATISというフレームワークを例に説明されるが,ここでは省略する。フレームワークを使うことのメリットとデメリットをまとめておく。
メリット | デメリット |
---|---|
設計・開発工数の削減 | 学習コストの増大 |
品質の向上 | 設計における自由度の低下 |
テスト工数の削減 | 長期的な技術力の低下 |
Lesson7
Webアプリケーションの攻撃手法と対策
ここでは本に記載されているものについて簡単にまとめておく。
SQLインジェクション
手法:入力インターフェースを利用してデータベースに発行されるSQLを変更することで,情報の不正取得や改竄を行う
対策:入力値のチェック,プリペアード・ステートメントの利用
手法:HTMLの中に悪意ある動作をするJavaScriptを埋め込む
対策:サニタイジング
手法:セッションIDを第三者が盗む
対策:XSS対策,通信経路の暗号化,セッション・タイムアウト値の変更,セッションIDのランダム化
手法:捏造したフォームから強制的に情報をサブミットする
対策:ワンタイムトークンの使用
強制ブラウズ
手法:WebブラウザのアドレスバーにURLを直接入力する
対策:状態をチェックさせるような設計
手法:../を利用してディレクトリを遡ることでアクセスする
対策:拡張子をシステム側で付与させる(ただしヌルバイトに弱い)。
以下の書籍などに詳細がふれられている。
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践
- 作者: 徳丸浩
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/06/21
- メディア: 単行本
- この商品を含むブログを見る
まとめ
少なくとも本書のレベルは,アプリケーションを実装する人でなくてもそれに関わる業界にいるのであれば必須であると感じた。フレームワークを用いたアプリケーション実装にはもう少し理論的な勉強が必要かもしれない。
(終)