キーワード
動的コンテンツ生成
機能 | 説明 | 補足 |
---|---|---|
CGI | リクエスト受信時にプロセス起動 | ×性能 ×HTML出力とロジック処理が混在 |
サーブレット | 常駐デーモンがプログラム実行(Javaコードの中にHTMLを埋め込む) | 〇性能 ×HTML出力とロジック処理が混在 |
JSP | 常駐デーモンがプログラム実行(HTMLの中にJavaコードを埋め込む) | 〇性能 |
※phpはJSPと似てる。httpdに組み込まれたphpモジュールがphpコードを実行。別途プロセス起動せずhttpdプロセス内部で実行。
Webサーバへの情報送信方法
メソッド | 送信方法 |
---|---|
get | クエリ文字列 |
post | メッセージボディ |
セッション管理
セッションIDをクエリ文字列 or Cookieに格納して行う。
* アプリケーションサーバ
提供する機能
・セッション管理
・トランザクション管理
・データベースの管理
コネクションプーリング
・可用性、性能の向上
セッションレプリケーション
セキュリティ
攻撃 | 対策 |
---|---|
SQLインジェクション | 入力値チェック プリペアードステートメント※1 |
XSS | サニタイジング (HTML出力時ブラウザがJavaスクリプトと解釈しないよう文字を置き換え) |
セッションハイジャック | XSS対策 通信暗号化 セッションタイムアウト短縮 セッションIDのランダム化 |
CSRF(クロスサイトリクエストフォージェリ)※2 | ワンタイムトーケン |
強制ブラウズ | Webサーバ・アプリの不具合なくす |
ディレクトリトラバーサル※3 | ユーザー入力データを使って、ディレクトリアクセスする機能を実装しない サニタイジング(ファイル名に含まれない/等の文字は削除する) |
※1
プリペアドステートメント(prepared statement)とは - IT用語辞典 e-Words
※2
例)
掲示板サイトへの投稿をサブミットするHTMLを解析し、そのリクエストを行うJavaScriptを用意する。
そのJavaScriptが読み込みと同時に実行されるようonLoad属性をonにしたWebページを用意する。
上記のWebページへ何かしらの方法で被害者に読み込みさせる。→結果的に、被害者が投稿したことになる。
外部からサブミットさせる攻撃
ログインが必要なサイトでも、被害者が対象サイトのセッションIDを持つCookieを持ってれば実行できてしまう
正規のフォームでないところから、サブミットできるのが問題。フォームにhiddenパラメタでワンタイムトークンを埋め込むことで、正規のフォームからのサブミットリクエストか?を判断でき、防ぐことができる。
※3
ユーザーから入力された値で、ディレクトリアクセスする機能を悪用
readfile("/var/www/" + $HOGE)
仮に上記のようなコードがアプリにあり、$HOGEがユーザーから入力された値だったとする。
$HOGEに../../etc/passwdとかにしたら、意図しないファイルが読み取られる可能性あり。