技術者のための プログラミングによるセキュリティ強化ガイド
2002年11月29日紙版発売
宮前竜也 著
B5変形判/272ページ
定価2,728円(本体2,480円+税10%)
ISBN 4-7741-1633-5
ただいま弊社在庫はございません。
書籍の概要
この本の概要
Webにおけるセキュリティ対策は,ネットワーク管理者だけの仕事ではありません。寧ろ,Webアプリケーション開発者がより警戒すべきですが,工期に追われ,対策を怠りがちです。本書はそのような開発者のために,具体的な対処法について,1から詳しく解説しています。
こんな方におすすめ
- 新人Webアプリケーション開発者
- 自作Webアプリケーションのセキュリティに不安を感じている方
- これからWebアプリケーションを公開しようと思っている方
目次
- 使用条件
- はじめに
■第1章 Webサーバのセキュリティ
- 1-1 開発者によるセキュリティ対策
- 1-1-1 セキュリティ意識の必要性
- 1-1-2 Webアプリケーション開発は簡単?
- 1-1-3 いつセキュリティ対策を行うのか
- 1-2 ファイアウォールとIDSによるアクセス管理
- 1-2-1 ファイアウォールとは
- 1-2-2 ファイアウォールの種類
- 1-2-3 ファイアウォールのネットワーク構成
- 1-2-4 侵入検知システム(IDS)
- 1-3 公開サーバのセキュリティポリシー
- 1-3-1 踏み台にされることの脅威
- 1-3-2 DoS/DDoS攻撃
- 1-3-3 侵入された場合の対処
- 1-4 不正アクセスの実態
- 1-4-1 敵はどこにいる?
- 1-4-2 アプリケーション側の対策も重要
■第2章 セッション管理
- 2-1 状態維持とセッション管理
- 2-1-1 HTTPの仕組み
- 2-1-2 状態維持管理の必要性
- 2-2 状態維持の方法
- 2-2-1 クエリー文字列による状態維持
- 2-2-2 hiddenフィールドによる状態維持
- 2-2-3 クッキーによる状態維持
- 2-3 セッション管理
- 2-3-1 クッキーを使ったセッション管理による状態維持
- 2-3-2 クッキーを使わないセッション管理による状態維持
- 2-4 セッションハイジャック
- 2-4-1 セッションハイジャックとは
- 2-5 Perlによるセッション管理
- 2-5-1 Perlでセッション管理を行う方法
- 2-5-2 Apache::Sessionのインストール
- 2-5-3 Apache::Sessionの使い方
- 2-6 GETとPOSTの使い分け
■第3章 汚染チェック
- 3-1 汚染文字列とその除去法
- 3-1-1 危険な汚染文字列
- 3-1-2 汚染を取り除く
- 3-1-3 もう一歩安全に
- 3-2 Perlで注意すべき関数
- 3-2-1 open()
- 3-2-2 外部コマンド実行関数
- 3-2-3 eval()
- 3-3 Perlの汚染モード
- 3-3-1 汚染モードの使用法
- 3-4 偽造リクエストと汚染文字列
- 3-4-1 フォームの改ざん
- 3-4-2 ドメイン制限機能付きメール送信システム
- 3-5 クライアント側によるチェック
- 3-5-1 クライアント側によるチェックの長所
- 3-5-2 クライアント側によるチェックの短所
- コラム 入力チェックの重要性
■第4章 遷移制御
- 4-1 Webのページ遷移
- 4-1-1 ページ遷移制御の難しさ
- 4-1-2 遷移が妥当かチェックするには
■第5章 クロスサイトスクリプティング
- 5-1 クロスサイトスクリプティング脆弱性とは
- 5-1-1 任意のスクリプトの実行
- 5-2 クロスサイトスクリプティングによる攻撃例
- 5-2-1 ブラウザ・クラッシャー
- 5-2-2 クッキー窃取
- 5-2-3 偽コンテンツ
- 5-2-4 エンコードされたパラメータ
- 5-3 クロスサイトスクリプティングを防ぐには
- 5-3-1 開発するアプリケーションの対策
- 5-3-2 サニタイジングの際の注意点
- 5-4 IEのセキュリティホール
- 5-4-1 text/plainでもスクリプトが実行されてしまう問題
- 5-4-2 aboutスキームの脆弱性
■第6章 情報流出対策
- 6-1 危険なファイル配置
- 6-1-1 生データ丸出し
- 6-1-2 データ流出を防ぐには
- 6-2 ソースコード流出
- 6-2-1 ソースコード流出防止対策
■第7章 ユーザー認証とアクセス制御
- 7-1 .htaccessファイルの有効化
- 7-2 Basic認証
- 7-2-1 Basic認証を使う
- 7-2-2 Basic認証のセキュリティ
- 7-2-3 Webアプリケーションからのユーザー名確認
- 7-2-4 ユーザーごとの制御
- 7-2-5 グループごとの制御
- 7-2-6 ファイルごとの制御
- 7-3 独自の認証
- 7-3-1 独自認証の注意点
- 7-3-2 独自認証の実装例
- 7-3-3 passwordフィールドは安全か
- 7-4 Webサーバによるアクセス制御
- 7-4-1 特定の場所からのアクセスを禁止する
- 7-4-2 特定の場所からのアクセスのみを許可する
- 7-4-3 ファイルごとの制御
- 7-5 独自のアクセス制御
■第8章 Web掲示板
- 8-1 HTMLタグの使用許可
- 8-1-1 HTMLタグの使用を禁止にする
- 8-1-2 自動的にアンカーを作る
- 8-2 悪質な投稿への対処
- 8-2-1 自動投稿攻撃
- 8-2-2 悪戯投稿の防止
- コラム 掲示板の健全な運用
■第9章 その他の注意点
- 9-1 適切なエラーメッセージ
- 9-2 SSIの危険性
- 9-3 setuidプログラムの危険性
- 9-3-1 setuidのパーミッション
- 9-3-2 パスすり替えの危険性
- 9-3-3 パスのすり替え対策
- 9-3-4 シンボリックリンクの悪用
- 9-4 バッファオーバーフロー
- 9-5 実行権限の最小化
- 9-6 suEXEC
- 9-6-1 suEXECとは
- 9-6-2 suEXECを導入する
- 9-6-3 suEXECの動作確認
- 9-7 ボタン連打対策
■第10章 SSL
- 10-1 SSLとは
- 10-1-1 パケット盗聴(スニッファ)
- 10-1-2 SSLの主な機能
- 10-1-3 SSLを使用するには
- 10-2 SSLの仕組み
- 10-2-1 暗号化の仕組み
- 10-2-2 デジタル署名
- 10-3 OpenSSLの設定
- 10-3-1 OpenSSLのインストール
- 10-3-2 キーペアの作成
- 10-4 SSL機能つきApacheのインストール
- 10-4-1 SSL機能を有効にしたApacheのインストール
- 10-4-2 キーペアのインストール
- 10-4-3 Apacheの起動と動作確認
- 10-4-4 自動起動の設定
- 10-5 SSLを有効に活用するには
- 10-5-1 頭隠して…
- 10-5-2 データ入力ページの保護
■第11章 データベース
- 11-1 PostgreSQLのセキュリティ設定
- 11-1-1 アクセス制御
- 11-1-2 アクセス制御設定の詳細
- 11-1-3 パスワード認証(MD5)を設定する
- 11-2 ダイレクトSQLコマンドインジェクション
- 11-2-1 ダイレクトSQLコマンドインジェクションとは
- 11-2-2 基本的なSQLインジェクション対策
- 11-2-3 DBIのquote関数を使う方法
- 11-2-4 DBIのプレースホルダを使う方法
- 11-2-5 ODBCの場合
- 11-3 DBMSのアクセス権
- 11-4 パスワードの扱い
- コラム パスワードの管理
■第12章 運用/メンテナンスガイド
- 12-1 サーバのアクセス制御(TCP Wrapper)
- 12-2 SSH
- 12-2-1 OpenSSHとは
- 12-2-2 OpenSSHのインストール
- 12-2-3 SSHのアクセス制御
- 12-2-4 Telnetの停止
- 12-4 WindowsからSSHを使用する(TTSSH)
- 12-4-1 Tera Term Proのインストール
- 12-4-2 TTSSHのインストール
- 12-4-3 TTSSHを使う
- 12-5 安全なファイル転送
- 12-5-1 TTSSHによるポート転送
- 12-5-2 WinSCP
■第13章 サーバのセキュリティ管理
- 13-1 ネットワーク型IDS 〜 Snort
- 13-1-1 Snortとは
- 13-1-2 Snortのインストール
- 13-1-3 動作の確認
- 13-1-4 自動起動の設定
- 13-1-5 ログをPostgreSQLに登録する
- 13-1-6 ACIDインストールの準備
- 13-1-7 ACIDのインストール
- 13-1-8 ルールセットのメンテナンス
- 13-2 セキュリティスキャナ 〜 Nessus
- 13-2-1 セキュリティスキャナの必要性
- 13-2-2 Nessusのインストール
- 13-2-3 Nessusを使ってみる
- 13-2-4 プラグインを更新する
- 13-2-5 セキュティスキャナを使う際の注意
■第14章 実践編
- 14-1 アプリケーションの概要
- 14-1-1 全ソースコード
- 14-1-2 データベースの準備
- 14-2 プログラムの解説
- 14-2-1 データベーススキーマの定義
- 14-3-2 メイン処理
- 14-2-3 閲覧機能の処理
- 14-2-4 投稿処理
- コラム Extension for Struts
■Appendix 付録
- Appendix A - PostgreSQL
- A-1 インストール
- A-2 PostgreSQLの簡単な使い方
- A-3 PerlとDBIを使ったプログラミング
- Appendix B - PHP
- B-1 インストール
- Appendix C - 参考URL
- C-1 Webサイト
- C-2 メーリングリスト