WEBシステムのセキュリティ技術

Similar documents
SQL インジェクションの脆弱性

[投影版]見つけられやすい脆弱性とウェブフレームワークに求められるセキュリティ対策_

1. SQL インジェクションの問題と脅威 2

講義内容 AppGoat の説明 起動手順 学習の進め方 利用シーン紹介 脆弱性学習 ( 演習あり ) SQLインジェクションの脆弱性 クロスサイト スクリプティングの脆弱性 アンケート記入 2

本書は 以下の URL からダウンロードできます 安全なウェブサイトの作り方

学校ホームページ管理ツール導入委託提案要求仕様書

安全なウェブサイトの作り方 7 版 の内容と資料活用例 2

— intra-martで運用する場合のセキュリティの考え方    

安全な Web サイトの作り方 7 版 と Android アプリの脆弱性対策 独立行政法人情報処理推進機構 (IPA) 技術本部セキュリティセンター Copyright 2015 独立行政法人情報処理推進機構

◎phpapi.indd

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

WebARENA SuiteX V2 EC-CUBE 2.13 インストールマニュアル ( 標準 MySQL+ 非 SSL ) 作成 :2014 年 2 月 Ver.1.1

Delphi/400開発ノウハウお教えします 情報を守ろう!安全性を高めたWebシステムの構築

目次 1. 会員登録 推奨動作環境 サイト閲覧環境 シミュレーション動作環境 各種設定について メールアドレスおよびニックネームの登録 個人情報の取り扱い

(8) [ 全般 ] タブをクリックします (9) [ インターネット一時ファイル ] の [ 設定 ] ボタンをクリックします (10) [ 保存しているページの新しいバージョンの確認 ] から [ ページを表示するごとに確認する ] をクリックします (11) [OK] ボタンをクリックしていき

SQLインジェクション対策再考

目次 1. PDF 変換サービスの設定について )Internet Explorer をご利用の場合 )Microsoft Edge をご利用の場合 )Google Chrome をご利用の場合 )Mozilla Firefox をご利

第 7 回の内容 動的な Web サイト フォーム Web システムの構成

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する


HeartCoreインストールマニュアル

迷惑メールチェックサービス設定マニュアル rev /7/6 株式会社イージェーワークス 1

Webhard_Users manual

5-2. 顧客情報をエクスポートする 顧客管理へのアクセス手順 メールディーラーで管理する顧客情報に関する設定を行います 1. 画面右上の 管理設定 をクリックする 2. 管理設定 をクリックする 3. ( タブ ) 顧客管理 をクリックする 2

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

ごあいさつ このたびは 日本テレネット株式会社の AUTO 帳票 Custom をお使いいただき まことにありがとう ございます お使いになる前に 本書をよくお読みのうえ 正しくお使いください 本書の読み方 本マニュアルは AUTO 帳票 Custom * を利用して FAX 送信管理を行う方のため

管理サイト操作マニュアル Version.1.1. デジアナコミュニケーションズ株式会社

目次 1. はじめに... 1 動作環境... 1 その他 他の人が利用する ID を発行したい... 2 ユーザー ID 作成を作成しましょう パソコンのデータを自動でアップロードしたい... 4 PC 自動保管機能を使用してみましょう 不特定多数の

目次 1. ログイン P2 2. 送受信管理 P メールの新規送信 P 未送信 ( 保存 ) メールの編集 削除 P 送信済みメールの状況確認 P6 3. メンバー ( 送信先 ) 管理 P メンバーの新規登録 編集 P メンバーの削除 P

Microsoft Word - 06.doc

目次 はじめに 1サーバ作成 2 初期設定 3 利用スタート 付録 Page.2

Webセキュリティサービス

PowerPoint プレゼンテーション

9 WEB監視

PowerPoint プレゼンテーション

ロイロノートスクールクラウド版表 クラウド サービス利 弊社が 意しているクラウドサービスへ接続し利 するシンプルなプランです サービスだけで利 することができます プラン 保存可能な容量 / ユーザー 額の場合 / ユーザー 年額の場合 / ユーザー 共 タブレット向け 1 0.8GB 40 円

1. ログイン 1. インターネットに接続をします 2. ご利用のブラウザー (Internet Explorer,Netscape など ) を起動し アドレスバーに ( www は不要 ) と入力します 3.Log-in 画面にお客様のユーザー I

<4D F736F F D F8E FEE95F1836C F8EE88F878F F88979D8BC68ED2976C A2E646F63>

Microsoft Word - XOOPS インストールマニュアルv12.doc

データベースアクセス

XAMPP で CMS のお手軽 テスト環境を手に入れよう 2011/5/21 上村崇 1

目次 1.1. AOS ユーザー登録 AOS ライセンスキー登録 ios 版アプリ インストール 起動と新規登録 初期設定とバックアップ Android 版アプリ インストール...

Shareresearchオンラインマニュアル

ログインする ブラウザを使ってログイン画面 を表示します ユーザー名とパスワードを入力し ログイン をクリックします メールアドレス : パスワード : メールアドレスのパスワ

SiteLock操作マニュアル

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

ウェブデザイン技能検定 1 級実技 平成 28 年度 第 4 回 ウェブデザイン技能検定 1 級 実技試験概要 試験にあたっての注意事項 試験者は本試験の留意事項 注意事項に留意して作業を行うこと ペーパー実技試験は 課題 1 から 5 までの 5 課題を 60 分間で行うこと 作業実技試験は 課題

HeartCore(PHP 版 ) インストール手順について説明いたします なお 本資料は 例として下記内容を前提として説明しております 環境情報 対象 OS: Linux ( ディストリビューション : Red Hat Enterprise Linux Server) APサーバ : Apache

目次 1. 教育ネットひむかファイル転送サービスについて ファイル転送サービスの利用方法 ファイル転送サービスを利用する ( ひむか内 ) ファイル転送サービスへのログイン ひむか内 PCでファイルを送受信する

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

HeartCoreインストールマニュアル(PHP版)

PowerPoint プレゼンテーション

9. システム設定 9-1 ネットワーク設定 itmはインターネットを経由して遠隔地から操作を行ったり 異常が発生したときに電子メールで連絡を受け取ることが可能です これらの機能を利用するにはiTM 本体のネットワーク設定が必要になります 設定の手順を説明します 1. メニューリスト画面のシステム設

システム利用前の準備作業2.1 準備作業の流れ 準備作業の流れは 以下のとおりです 2必要なものを用意する 2.2 パソコンインターネット接続回線 E メールアドレス 2.2-(1) 2.2-(2) 2.2-(3) 当金庫からの送付物 2.2-(4) パソコンの設定をする 2.3 Cookie の設

迷惑メールフィルタリングサービス コントロールパネル利用者マニュアル

PowerPoint プレゼンテーション

メール誤送信対策<利用者編> ご利用の手引き

Si 知識情報処理

2. saccess saccess SQL SQL SQL saccess SQL SQL PHP 3. saccess saccess saccess Web *1 [5] saccess * saccess saccess, SQ

Microsoft Word - Webシステム/Webアプリケーション セキュリティ要件書 docx

HDC-EDI Manager Ver レベルアップ詳細情報 < 製品一覧 > 製品名バージョン HDC-EDI Manager < 対応 JavaVM> Java 2 Software Development Kit, Standard Edition 1.4 Java 2

KDDI ホスティングサービス G120 KDDI ホスティングサービス G200 WordPress インストールガイド ( ご参考資料 ) rev.1.2 KDDI 株式会社 1

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

目次 1. AOS ユーザー登録サイト AOS ユーザー登録 AOS ライセンスキー登録 ios 版アプリ インストール 起動と新規登録 初期設定とバックアップ Andro

XMLとXSLT

Transcription:

WEB システムの セキュリティ技術 棚橋沙弥香

目次 今回は 開発者が気をつけるべきセキュリティ対策として 以下の内容について まとめました SQLインジェクション クロスサイトスクリプティング OSコマンドインジェクション ディレクトリ トラバーサル HTTPヘッダ インジェクション メールヘッダ インジェクション

SQL インジェクションとは 1 データベースと連動した Web サイトで データベースへの問い合わせや操作を行うプログラムにパラメータとして SQL 文の断片を与えることにより データベースを改ざんしたり不正に情報を入手する攻撃をいう 画面 ユーザー ID パスワード user1 or 1 = 1 ログイン 不正なログインができてしまう 作成されるSQL SELECT * FROM user WHERE userid = user1 and passwd = or 1 = 1

SQL インジェクションとは 2 SQL インジェクションによる攻撃で 不正データの取得以外にも データ更新 削除を行うこともできる 画面 ユーザー ID パスワード user1 ;DELETE FROM user;-- ログイン データが消せてしまう 作成される SQL SELECT * FROM user WHERE userid = user1 and passwd = ;DELETE FROM user;--

SQL インジェクションの対策 1 SQL 文の呼び出しに 静的プレースホルダ 方式を用いると SQL の構文がパラメータバインド前に確定するため SQL インジェクションの発生を防げる WEB アプリ SQL の構文がこの時点で確定する データベース SELECT * FROM user WHERE userid = and passwd = =user1 =ai5$p SQL 文をバインド 実行結果 SELECT * FROM user WHERE userid = and passwd = =user1 =ai5$p SELECT * FROM user WHERE userid = user1 and passwd = ai5$p 実行結果

SQL インジェクションの対策 2 SQL 文の呼び出しに 動的プレースホルダ 方式を用いると ライブラリにバグが無ければ SQL インジェクションの発生を防げる WEB アプリ SELECT * FROM user WHERE userid = and passwd = ライブラリ内で SQL をバインド データベース =user1 =ai5$p SELECT * FROM user WHERE userid = user1 and passwd = ai5$p SELECT * FROM user WHERE userid = user1 and passwd = ai5$p 実行結果

SQL インジェクション対策 3 SQL インジェクション対策としては 静的プレースホルダ 方式を用いるのが最も望ましいが どちらのプレースホルダを用いるかは プログラミング言語とデータベースの組合せで異なる 言語 Java Java PHP PHP データベース Oracle MySQL MySQL PostgreSQL プレースホルダの実装 静的のみ 静的または 静的または 静的のみ 動的 動的 デフォルト静的動的 ( ) 動的 ( ) 静的 ) 静的プレースホルダを利用するには DB 接続時のパラメータ変更が必要

SQL インジェクションの対策 4 その他 以下の対策がある SQL 文の組み立てを文字列連結により行う場合は エスケープ処理 ( ; 受理しない 等 ) を適切に行う ウェブアプリケーションに渡されるパラメータに SQL 文を直接指定しない ( 保険的対策 ) データベースアカウントに適切な権限を与える エラーメッセージをそのままブラウザに表示しない

クロスサイトスクリプティングとは 1 ユーザーの Web ブラウザ上で 不正な HTML タグや JavaScript 等が動いてしまう攻撃をいう 画面 ユーザー ID <script>alert(document.cookie);</script> 送信 不正な JavaScript ダイアログが表示される

クロスサイトスクリプティングとは 2 クロスサイトスクリプティングにより 以下の脅威が発生し得る 本物サイト上に偽のページが表示される 偽情報の流布による混乱や フィッシング詐欺による重要情報の漏えい等が起こる ブラウザが保存している Cookie を取得される Cookie に保存されているセッション ID( ) や個人情報等の機密情報が漏えいする 任意の Cookie をブラウザに保存させられる セッション ID ( ) が利用者に送り込まれる ( ) セッション ID を利用した攻撃については次項で説明する

クロスサイトスクリプティングとは 3 クロスサイトスクリプティングで取得 設定したセッション ID を用いると 以下の セッション ハイジャック が行えてしまう

クロスサイトスクリプティングの対策 1 HTML テキストの入力を許可しない場合は 以下の対策を行う ウェブページに出力する全ての要素に対して エスケープ処理を施す データベースやファイルから読み込んだ文字列や 演算によって生成した文字列等も対象とする 変換前 変換後 & & または & < < または < > > または > ( ダブルクォート ) " または " ( シングルクォート ) &apos; または &#39;

クロスサイトスクリプティングの対策 2 HTML テキストの入力を許可しない場合 ( 続き ) HTML タグを出力する場合は その属性値を必ず ( ダブルクォート ) で括るようにする URL を出力するときは http:// や https:// で始まる URL のみを許可する ( javascript: の形式で始まるものは許可しない ) <script> </script> 要素の内容を動的に作成しない スタイルシートを任意のサイトから取り込めるようにしない ( 保険的対策 ) 入力値の内容チェックを行う

クロスサイトスクリプティングの対策 3 HTML テキストの入力を許可する場合は 以下の対策を行う 入力された HTML テキストに対して構文解析を行い スクリプトを含まない必要な要素のみ抽出する ( 保険的対策 ) 入力された HTML テキストから スクリプトに該当する文字列を削除する 例えば <script> を <xscript> javascript: を xjavascript: へ置換する

クロスサイトスクリプティングの対策 4 HTML テキストの入力を許可する / しないに関わらず 以下の対策を行う HTTP レスポンスヘッダの Content-Type フィールドに文字コード (charset) を指定する ( 保険的対策 ) Cookie 情報の漏えい対策として 発行する Cookie に HttpOnly 属性を加え スクリプトからのアクセスを禁止する ブラウザには クロスサイト スクリプティング攻撃のブロックを試みる機能を備えたものがあるので なるべくそれを利用する

OS コマンドインジェクションとは 閲覧者からのデータの入力や操作を受け付けるような Web サイトで プログラムに与えるパラメータに OS に対する命令文を紛れ込ませて不正に操作する攻撃をいう 画面 メールアドレスを入力してください メール test@test.com; rm rf / 送信 不正なデータ削除が行われてしまう 実行される OS コマンド /usr/lib/sendmail test@test.com; rm rf /

OS コマンドインジェクションの対策 1 OS コマンドを起動できる言語機能の利用をできるだけ避ける 例えば メールの送信を行うプログラムを作成するには OS コマンド ( 例 :sendmail) を利用せず 開発言語やフレームワークで用意されているメール送信の関数やメソッド ( 例 :JavaMail) を利用するようにする

OS コマンドインジェクションの対策 2 やむを得ず OS コマンドを起動できる言語機能を利用する場合は その引数を構成する全ての変数に対してチェックを行い あらかじめ許可した処理のみを実行する パラメータは引用符 で囲み パラメータ内の引用符 はエスケープ ( 例 :Linux の場合 ) する また ファイル名を引数に指定する場合は ディレクトリの指定に注意する ( 詳細は次項で説明する )

ディレクトリ トラバーサルとは 読み込みや書き込みを行うファイル名を外部パラメータとして指定可能な場合に 意図しないファイルを Web システムの処理対象としてしまう攻撃をいう?file=../../etc/secret.txt 本来見えてはいけないファイルが閲覧できてしまう

ディレクトリ トラバーサルの対策 外部からのパラメータでウェブサーバ内のファイル名を直接指定する実装を避ける ファイルを開く際は 固定のディレクトリを指定し ファイル名にディレクトリ名が含まれないようにする ( 保険的対策 ) ウェブサーバ内のファイルへのアクセス権限の設定を正しく管理する ファイル名のチェックを行う

HTTP ヘッダ インジェクションとは HTTP を使って通信するシステムにおいて 動的に HTTP ヘッダを生成する機能の不備を突いてヘッダ行を挿入することで 不正な動作を行なわせる攻撃をいう HTTP ヘッダインジェクションのあるプログラム例 header( Location:.$_GET[ url ]); リクエスト 改行コード url=http://example.jp/ %0D%0ASet-Cokkie:+SESSID=ABC 生成されるレスポンスヘッダ Location:http://example.jp/ Set-Cokkie:SESSID=ABC 改行コードにより新たなヘッダができてしまう

HTTP ヘッダ インジェクションの対策 ヘッダの出力を直接行わず ウェブアプリケーションの実行環境や言語に用意されているヘッダ出力用 API を使用する 改行コードを適切に処理するヘッダ出力用 API を利用できない場合は 改行を許可しないよう 開発者自身で適切な処理を実装する ( 保険的対策 ) 外部からの入力の全てについて 改行コードを削除する

メールヘッダ インジェクションとは 宛先 (To) や件名 (Subject) などのメールヘッダを外部から指定する際に 改行文字を使ってメールヘッダや本文を追加 変更してしまう攻撃をいう メールヘッダインジェクションのあるプログラム例 header( From:.$_GET[ from ]); リクエスト 改行コード from=test%40example.com%0d%0acc:admin%40hackr.jp 生成されるレスポンスヘッダ From:test@example.com Cc:admin@hackr.jp 改行コードにより新たな宛先が追加されてしまう

メールヘッダ インジェクションの対策 メールの宛先 (To,Cc,Bcc) 件名 (Subject) などのメールヘッダを固定値にして メール本文のみ入力できるようにする メールヘッダを固定値にできない場合 ウェブアプリケーションの実行環境や言語に用意されているメール送信用 API を使用する ( 保険的対策 ) 外部からの入力の全てについて 改行コードを削除する

参考文献 IPA 情報処理推進機構 安全なウェブサイトの作り方 http://www.ipa.go.jp/security/vuln/websecurity.html