development guideline/ASP.NET/Security のバックアップ(No.1) |
|





















・ シェルを起動する実装を避ける。
2.4.2 SQLコマンド・インジェクション (39)
・ SQL文の生成にバインド機構を使用する。
上記が実現できない場合は、全ての変数にエスケープ処理が必要。
・ SQLエラーメッセージをブラウザにそのまま表示しない
2.4.3 バッファオーバーフロー (44)
・ ループの終了条件でバッファ境界をチェックする。
・ 書き込み先バッファサイズを指定する。
・ 上限サイズのバッファを用意する。
・ 与えるデータサイズを制限する。
・ バッファオーバーフロー対策ツールを利用する。
2.5 クライアントサイドアタック
2.5.1 クロスサイト・スクリプティング (58)
[HTMLテキストの入力を許可しない場合]
・ Webページに出力する全ての要素に対して、エスケープ処理を施す。
エスケープ処理は、ASP.NETのコントロール群に任せ、基本的には個別に実装しない。(独自ルール)(動的javascript埋め込み等、リテラル処理を行う箇所は例外)
・ スタイルシートを外部サイトから取り込めるようにしない
2.6 ロジカルアタック
2.6.1 クロスサイト・リクエスト・フォージェリ(CSRF) (65)
・ 全ページのPOSTパラメータに秘密情報を挿入し、サーバで記録していた値と比較する。
2.6.2 プロセスフロー管理の不備 (69)
・ 不正な画面遷移を防ぐために、予約ページ等ではTransactionTokenを利用する。
・ 重要なデータ処理の直前はPOST動作にする。GETを使わない。(独自ルール)
2.7 その他
2.7.1 HTTPヘッダ・インジェクション (80)
・ 外部から渡されるパラメータを、直接HTTPヘッダ情報として用いない。
上記が実現できない場合は、レスポンスヘッダ記述用APIを用いたり、改行を削除する。
2.7.2 バックドアとデバッグオプション (84)
・ 実装用、または試験用にバックドアやデバッグオプションが必要な場合は、ユーザに指定できない方式とする。(独自ルール)