技術者のための プログラミングによるセキュリティ強化ガイド

[表紙]技術者のための プログラミングによるセキュリティ強化ガイド

紙版発売

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 メーリングリスト

■索引

著者プロフィール

宮前竜也(みやまえたつや)