pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

Web技術メモ

キーワード

動的コンテンツ生成

機能 説明 補足
CGI リクエスト受信時にプロセス起動 ×性能
×HTML出力とロジック処理が混在
サーブレット 常駐デーモンがプログラム実行(Javaコードの中にHTMLを埋め込む) 〇性能
×HTML出力とロジック処理が混在
JSP 常駐デーモンがプログラム実行(HTMLの中にJavaコードを埋め込む) 〇性能

phpJSPと似てる。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とかにしたら、意図しないファイルが読み取られる可能性あり。