目 次 XSSを 防 ぐために: 開 発 者 のための 実 践 ガイド 3 XSS を 避 けるために 知 っておくべき3つの 事 3 HTML のエスケープでは 十 分 ではない 3 フレームワークはあまり 助 けてくれない 3 ネストしたコンテキストに 心 が 折 れる 3 Coverity S

Similar documents
PowerPoint プレゼンテーション

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安

WEB版「新・相続対策マスター」(ご利用の手引き)

1. 決 算 の 概 要 法 人 全 体 として 2,459 億 円 の 当 期 総 利 益 を 計 上 し 末 をもって 繰 越 欠 損 金 を 解 消 しています ( : 当 期 総 利 益 2,092 億 円 ) 中 期 計 画 における 収 支 改 善 項 目 に 関 して ( : 繰 越

している 5. これに 対 して 親 会 社 の 持 分 変 動 による 差 額 を 資 本 剰 余 金 として 処 理 した 結 果 資 本 剰 余 金 残 高 が 負 の 値 となるような 場 合 の 取 扱 いの 明 確 化 を 求 めるコメントが 複 数 寄 せられた 6. コメントでは 親

( 別 紙 ) 以 下 法 とあるのは 改 正 法 第 5 条 の 規 定 による 改 正 後 の 健 康 保 険 法 を 指 す ( 施 行 期 日 は 平 成 28 年 4 月 1 日 ) 1. 標 準 報 酬 月 額 の 等 級 区 分 の 追 加 について 問 1 法 改 正 により 追 加

Microsoft Word - ML_ListManager_10j.doc

(3) 小 単 元 の 指 導 と 評 価 の 計 画 小 単 元 第 11 章 税 のあらまし の 指 導 と 評 価 の 計 画 ( 四 次 確 定 申 告 制 度 抜 粋 ) 関 心 意 欲 態 度 思 考 判 断 技 能 表 現 知 識 理 解 小 単 元 の 評 価 規 準 税 に 関 す

Q IFRSの特徴について教えてください

企業におけるマイナンバーのセキュリティに関する実態調査

新 生産管理システム ご提案書 2002年10月15日 ムラテック情報システム株式会社

[2] 控 除 限 度 額 繰 越 欠 損 金 を 有 する 法 人 において 欠 損 金 発 生 事 業 年 度 の 翌 事 業 年 度 以 後 の 欠 損 金 の 繰 越 控 除 にあ たっては 平 成 27 年 度 税 制 改 正 により 次 ページ 以 降 で 解 説 する の 特 例 (

スライド 1

<4D F736F F F696E74202D2082C882E982D982C DD8ED88EE688F882CC82B582AD82DD C668DDA9770>

労働時間と休日は、労働条件のもっとも基本的なものの一つです

< 現 在 の 我 が 国 D&O 保 険 の 基 本 的 な 設 計 (イメージ)> < 一 般 的 な 補 償 の 範 囲 の 概 要 > 請 求 の 形 態 会 社 の 役 員 会 社 による 請 求 に 対 する 損 免 責 事 由 の 場 合 に 害 賠 償 請 求 は 補 償 されず(

弁護士報酬規定(抜粋)

第4回税制調査会 総4-1

養 老 保 険 の 減 額 払 済 保 険 への 変 更 1. 設 例 会 社 が 役 員 を 被 保 険 者 とし 死 亡 保 険 金 及 び 満 期 保 険 金 のいずれも 会 社 を 受 取 人 とする 養 老 保 険 に 加 入 してい る 場 合 を 解 説 します 資 金 繰 りの 都

3. 選 任 固 定 資 産 評 価 員 は 固 定 資 産 の 評 価 に 関 する 知 識 及 び 経 験 を 有 する 者 のうちから 市 町 村 長 が 当 該 市 町 村 の 議 会 の 同 意 を 得 て 選 任 する 二 以 上 の 市 町 村 の 長 は 当 該 市 町 村 の 議

注 雇 促 進 税 制 と 本 制 度 のどちらかを 利 する 可 能 性 があるが あらかじめどちらの 制 度 を 利 するか 判 断 できない という 場 合 雇 促 進 税 制 の 事 前 届 出 ( 雇 促 進 計 画 の 提 出 )をした 上 で 申 告 の 際 にどちらを 利 するかご

<4D F736F F F696E74202D E A B D682CC91E3955C93498D558C822E707074>


目 次 1. 積 算 内 訳 書 に 関 する 留 意 事 項 1 ページ 2. 積 算 内 訳 書 のダウンロード 3 ページ 3. 積 算 内 訳 書 の 作 成 (Excel 2003の 場 合 ) 6 ページ 4. 積 算 内 訳 書 の 作 成 (Excel 2007の 場 合 ) 13

2. ど の 様 な 経 緯 で 発 覚 し た の か ま た 遡 っ た の を 昨 年 4 月 ま で と し た の は 何 故 か 明 ら か に す る こ と 回 答 3 月 17 日 に 実 施 し た ダ イ ヤ 改 正 で 静 岡 車 両 区 の 構 内 運 転 が 静 岡 運

4.5. < 参 加 表 明 書 を 提 出 する> 調 達 案 件 一 覧 の 表 示 対 象 となる 案 件 を 検 索 し 調 達 案 件 一 覧 に 表 示 させます 参 加 したい 案 件 の 調 達 案 件 名 称 行 - 入 札 参 加 資 格 確 認 申 請 / 技 術 資 料 /

疑わしい取引の参考事例

Excel 応 用 Ⅱ Excelの 知 識 をより 深 め 今 以 上 に 活 用 し 業 務 を 効 率 化 させたい 人 にお 勧 めします また 豊 富 な 問 題 演 習 で 実 務 に 活 かせるスキルを 身 につけます 容 : 複 合 グラフの 操 作 データベースの 活 用 ピボット

(別紙3)保険会社向けの総合的な監督指針の一部を改正する(案)

文化政策情報システムの運用等

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

1 特 別 会 計 財 務 書 類 の 検 査 特 別 会 計 に 関 する 法 律 ( 平 成 19 年 法 律 第 23 号 以 下 法 という ) 第 19 条 第 1 項 の 規 定 に 基 づき 所 管 大 臣 は 毎 会 計 年 度 その 管 理 する 特 別 会 計 について 資 産

<4D F736F F D2091E F18CB48D C481698E7B90DD8F9590AC89DB816A2E646F63>

< F2D8ED089EF95DB8CAF939996A289C193FC91CE8DF42E6A7464>

1

(1)1オールゼロ 記 録 ケース 厚 生 年 金 期 間 A B 及 びCに 係 る 旧 厚 生 年 金 保 険 法 の 老 齢 年 金 ( 以 下 旧 厚 老 という )の 受 給 者 に 時 効 特 例 法 施 行 後 厚 生 年 金 期 間 Dが 判 明 した Bは 事 業 所 記 号 が

1. 前 払 式 支 払 手 段 サーバ 型 の 前 払 式 支 払 手 段 に 関 する 利 用 者 保 護 等 発 行 者 があらかじめ 利 用 者 から 資 金 を 受 け 取 り 財 サービスを 受 ける 際 の 支 払 手 段 として 前 払 式 支 払 手 段 が 発 行 される 場 合

リング 不 能 な 将 来 減 算 一 時 差 異 に 係 る 繰 延 税 金 資 産 について 回 収 可 能 性 がないも のとする 原 則 的 な 取 扱 いに 対 して スケジューリング 不 能 な 将 来 減 算 一 時 差 異 を 回 収 できることを 反 証 できる 場 合 に 原 則

<4D F736F F D2091DE90458F8A93BE82C991CE82B782E98F5A96AF90C582CC93C195CA92A58EFB82CC8EE888F882AB B315D2E312E A2E646F63>

スライド 1

個 人 所 得 課 税 ~ 住 宅 ローン 控 除 等 の 適 用 期 限 の 延 長 2 4. 既 存 住 宅 に 係 る 特 定 の 改 修 工 事 をした 場 合 の 所 得 税 額 の 特 別 控 除 居 住 年 省 エネ 改 修 工 事 控 除 限 度 額 バリアフリー 改 修 工 事 平

財政再計算結果_色変更.indd


(Microsoft Word - Easy\203y\201[\203W\221\200\215\354\203K\203C\203h.doc)

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

2 Wee とは Wee はホームページの 更 新 ツールです Wee は サイトの 枠 組 みをWeb 製 作 業 者 が 作 成 し 更 新 は お 客 様 に 自 由 にしていただこうというコンセプトの 製 品 です インターネットに 繋 がる 場 所 ならどこからでも ブラウザでホームページ

様式第4号

預 金 を 確 保 しつつ 資 金 調 達 手 段 も 確 保 する 収 益 性 を 示 す 指 標 として 営 業 利 益 率 を 採 用 し 営 業 利 益 率 の 目 安 となる 数 値 を 公 表 する 株 主 の 皆 様 への 還 元 については 持 続 的 な 成 長 による 配 当 可

富士山チェックリスト

<4D F736F F D208DE3905F8D8291AC8B5A8CA48A948EAE89EF8ED0208BC696B18BA492CA8E64976C8F BD90AC E378C8E89FC92F994C5816A>

Taro-別紙1 パブコメ質問意見とその回答

H28記入説明書(納付金・調整金)8

スライド 1

<4D F736F F D D3188C091538AC7979D8B4B92F F292B98CF092CA81698A94816A2E646F63>

1 光 回 線 工 事 1 2 光 回 線 工 事 光 提 供 機 器 光 回 線 工 事 内 容 説 明 本 参 考 回 線 工 事 間 機 器 設 置 場 所 検 討 宅 内 配 線 端 末 機 器 等 準 備 提 携 申 込

Microsoft Word - 夢外貨(ダイレクト).doc

Microsoft PowerPoint - エントリー04_結婚TextVoice

01_07_01 データのインポート_エクスポート_1

一 括 登 録 方 法 一 括 登 録 をするには 予 め 専 用 の CSV ファイルを 作 成 する 必 要 があります 普 段 エクセルファイルで 管 理 をされている 方 は, 以 下 の 3 列 のみのデータとなるようにデータを 加 工 して CSV ファイルとして 保 存 して 下 さ

<4D F736F F D C689D789B582B581698AAE90AC92CA926D816A2E646F63>

< F2D91E F18BDF91E389BB955C8E D8E9689EF2E>

本 日 の 内 容 1. ゲートウェイシステムにより 提 出 する 電 子 ファイル 2. ゲートウェイシステムによる 提 出 方 法 3. 電 子 データとeCTDの 関 係 4. 提 出 形 式 提 出 方 法 に 係 るQ&A 2

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt)

6-1 第 6 章 ストック オプション 会 計 設 例 1 基 本 的 処 理 Check! 1. 費 用 の 計 上 ( 1 年 度 ) 2. 費 用 の 計 上 ( 2 年 度 )- 権 利 不 確 定 による 失 効 見 積 数 の 変 動 - 3. 費 用 の 計 上 ( 3 年 度 )-

Ⅰ 元 請 負 人 を 社 会 保 険 等 加 入 建 設 業 者 に 限 定 平 成 28 年 10 月 1 日 以 降 に 入 札 公 告 指 名 通 知 随 意 契 約 のための 見 積 依 頼 を 行 う 工 事 から 以 下 に 定 める 届 出 の 義 務 ( 以 下 届 出 義 務 と

IAF ID x:2010 International Accreditation Forum, Inc. Page 2 of 8 国 際 認 定 機 関 フォーラム(IAF)は 適 合 性 評 価 サービスを 提 供 する 機 関 の 認 定 のためのプログラ ムを 運 営 している この 認 定

( 別 途 調 査 様 式 1) 減 損 損 失 を 認 識 するに 至 った 経 緯 等 1 列 2 列 3 列 4 列 5 列 6 列 7 列 8 列 9 列 10 列 11 列 12 列 13 列 14 列 15 列 16 列 17 列 18 列 19 列 20 列 21 列 22 列 固 定

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

GRIDY SFA カスタム 項 目 操 作 ガイド 用 本 書 はに 必 要 な 操 作 を 解 説 しております は GRIDY SFA ののことです GRIDY SFA へ 申 し 込 み 最 初 に 登 録 を 行 った 方 がそのままとなります カスタム 項 目 はの 方 のみ 操 作 可

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

「為替特約付外貨定期預金<ターゲットA>の商品概要説明書」

<4D F736F F F696E74202D C90BF8F CC8DEC90AC97E181698A4F8D E8816A5F56322E707074>


説 明 内 容 料 金 の 算 定 期 間 と 請 求 の 単 位 について 分 散 検 針 制 日 程 等 別 料 金 料 金 の 算 定 期 間 と 支 払 義 務 発 生 日 日 程 等 別 料 金 の 請 求 スケジュール 料 金 のお 支 払 い 方 法 その 他 各 種 料 金 支 払

中 間 利 払 日 とし 預 入 日 または 前 回 の 中 間 利 払 日 からその 中 間 利 払 日 の 前 日 までの 日 数 および 通 帳 または 証 書 記 載 の 中 間 利 払 利 率 によって 計 算 した 中 間 利 払 額 ( 以 下 中 間 払 利 息 といいます )を 利


(Microsoft Word - \221\346\202P\202U\201@\214i\212\317.doc)

目 次 ログイン 方 法... 3 基 本 画 面 構 成... 4 メールサービス... 5 メールサービス 画 面 構 成... 5 アカウント 詳 細 / 設 定... 6 高 機 能 フィルター... 7 ユーザーフィルター 設 定... 8 新 規 フィルターの 追 加... 8 My ホ

ソフトウェア取引の収益の会計処理に関する実務上の取扱い

企業年金制度における個人番号の取扱いについて.PDF


法 人 等 に 対 する 課 税 際 課 税 原 則 の 帰 属 主 義 への 見 直 しのポイント 総 合 主 義 から 帰 属 主 義 への 移 行 法 人 及 び 非 居 住 者 ( 法 人 等 )に 対 する 課 税 原 則 について 従 来 のいわゆる 総 合 主 義 を 改 め OECD

1 変更の許可等(都市計画法第35条の2)

検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

事務連絡

ていることから それに 先 行 する 形 で 下 請 業 者 についても 対 策 を 講 じることとしまし た 本 県 としましては それまでの 間 に 未 加 入 の 建 設 業 者 に 加 入 していただきますよう 28 年 4 月 から 実 施 することとしました 問 6 公 共 工 事 の

タイトルを1~2行で入力 (長文の場合はフォントサイズを縮小)

2 役 員 の 報 酬 等 の 支 給 状 況 平 成 27 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 役 名 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 2,142 ( 地 域 手 当 ) 17,205 11,580 3,311 4 月 1

目 次 目 次 1 ログイン ログアウト ログインする...1 ログイン 画 面 が 表 示 されないときは?... 1 初 めてログインするときのパスワードは?... 2 初 期 パスワードを 忘 れてしまったときは?... 2 変 更 したパスワードを 忘 れてしまったときは?.

計算式の取り扱い

PowerPoint プレゼンテーション

施 工 P お 気 に 入 り データを 活 用 するための 準 備 施 工 パッケージデータをお 気 に 入 りに 登 録 し 単 価 を 閲 覧 するための 方 法 を 説 明 します 1. 施 工 パッケージデータをダウンロードする 施 工 パッケージデータのダウンロードは 下 記 から 行

るよう 工 事 打 合 せ 簿 ( 様 式 2)により 受 注 者 に 求 めます 5-1 理 由 書 ( 様 式 3)が 提 出 され 特 別 の 事 情 を 有 すると 認 めた 場 合 は 社 会 保 険 等 の 加 入 が 確 認 できる 書 類 を 提 出 するよう 工 事 打 合 せ 簿

医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート - 目 次 - < 第 1 章 > 共 通 事 項 説 明 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート 目 次 1.1 本 システムの 注 意 点 入 力 項 目 について 基 本 情

機 能 概 要 概 要 平 成 24 年 度 シームレスな 地 域 連 携 医 療 の 実 現 実 証 事 業 に 対 応 するため 地 域 連 携 システム( 能 登 北 部 版 )を 構 築 する 機 能 < 機 能 追 加 変 更 一 覧 > 1. 画 像 連 携 機 能 院 内 で 撮 影

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

スライド 1

<4D F736F F F696E74202D B B83678E9197BF2E B93C782DD8EE682E890EA97705D>

補償重複の対応に関するガイドライン(案)

Microsoft PowerPoint - 経営事項審査.ppt

Transcription:

XSSについて 開 発 者 が 知 っておくべきこと

目 次 XSSを 防 ぐために: 開 発 者 のための 実 践 ガイド 3 XSS を 避 けるために 知 っておくべき3つの 事 3 HTML のエスケープでは 十 分 ではない 3 フレームワークはあまり 助 けてくれない 3 ネストしたコンテキストに 心 が 折 れる 3 Coverity Security Library(コベリティセキュリティライブラリ) 4 インストールと 使 用 方 法 4 対 処 方 法 4 通 常 のHTML 要 素 4 HTML 属 性 5 HTML 属 性 内 部 のJavaScript 文 字 列 5 HTML 属 性 内 のフルURL 5 HTML 属 性 内 のCSS 文 字 列 6 JavaScriptの 文 字 列 6 JavaScriptの 文 字 列 内 のHTML 7 JavaScriptの 数 値 7 CSS 文 字 列 7 CSS 文 字 列 内 のURL 8 CSSカラー 8 HTML 属 性 内 のURLフラグメント 8 URLクエリ 文 字 とパス 要 素 9 コベリティについて 9 2

XSSを 防 ぐために: 開 発 者 のための 実 践 ガイド このドキュメントでは Webアプリケーション 開 発 時 に 必 要 とされるクロスサイトスクリプティング(XSS)への 対 処 方 法 特 に 開 発 者 が 理 解 しておくべき 修 正 方 法 について 解 説 します まず 前 提 となる 情 報 としてHTMLコンテキストについてご 紹 介 し 次 に Coverity Security Library について そし て web ページ 内 で 動 的 データが 現 れる 13 の 標 準 的 なケースについて 見 ていきます XSS を 避 けるために 知 っておくべき3つの 事 クロスサイトスクリプティング(XSS)は 多 くの 流 動 的 な 要 素 を 含 む 複 雜 な 問 題 ですが ここではもっとも 重 大 な 落 とし 穴 TOP 3 に 注 目 してみます HTMLのエスケープでは 十 分 ではない HTMLのエスケープ(HTMLエンティティを 用 いたもの)が HTMLページ 内 の 動 的 データ 出 力 に 対 して 常 に 正 しい 解 決 策 ではないということを 理 解 しているのは 重 要 なポイントです 全 ての 可 能 なHTML 出 力 コンテキストにおいて 動 的 デ ータを 安 全 にすることができる 魔 法 のエスケーパーというものは 存 在 しません 動 的 データがHTMLのどの 部 分 に 書 き 込 まれるか(たとえば URL JavaScript 文 字 列 など)に 応 じて エスケープやサニタイズ( 無 害 化 )を 使 用 する 必 要 が あります フレームワークはあまり 助 けてくれない フレームワークは 一 般 的 にエスケーパーを 備 えています しかしながら セキュリティにフォーカスした Coverity Security Library(CSL:コベリティセキュリティライブラリ)のようなものでないかぎりは 必 要 なすべてのエスケーパーは 提 供 さ れていないのが 現 実 です たとえば Spring フレームワークでは CSS 文 字 のエスケーパーを 見 つけることができない はずです 彼 らが 装 備 している HTML エンティティや JavaScript 文 字 のエスケーパーは 重 要 かもしれない 全 ての 文 字 やセキュリティのために 設 計 されてはいないのです ネストしたコンテキストに 心 が 折 れる XSS に 対 処 するために 理 解 しておくべき 重 要 なコンセプトがネストした HTML コンテキストです HTML ページ 内 の 特 定 の 出 力 に 対 する ネストしたコンテキストの 積 み 重 ねと どのようなエスケープが 必 要 か 決 定 する 過 程 に 例 をみること ができます 次 のHTMLの 一 部 分 を 考 察 してみましょう : <a href="javascript:hello('${content}')">... この 例 では content が 動 的 データとしてJavaの 式 言 語 (EL)の 表 記 (${content} が 注 目 すべきデータです)を 使 用 してHTMLページに 書 き 込 まれています content が 追 加 された 箇 所 を 分 析 してみると content が 以 下 のように 包 含 されていることがわかります : HTML 属 性 : で 囲 まれた 属 性 の 値 URL: href 属 性 の 内 部 のため ブラウザのためのURLとなることを 想 定 JavaScript: javascript: スキーマであることがわかり そしてその 後 にJavaScriptが 続 くことが 考 えられる JavaScript 文 字 列 : content は hello() JavaScript 関 数 に 渡 される 文 字 列 に 含 まれる HTML コンテキストを 理 解 するためには ブラウザがこのJavaScript 内 のcontentから 得 るものが 何 なのかを 見 てい く 必 要 があります : 1. HTML パーサーが href 属 性 の 内 容 とエスケープされていないHTMLエンティティを 得 る 2. URLをパースし それが javascript: スキーマであることを 認 識 3. URLの 内 容 を 取 得 (javascript: 以 降 )し それをURLデコードする 3

4. URLの 内 容 をJavaScriptに 渡 す 5. JavaScriptパーサーが 実 行 され 我 々のcontentを 含 むJavaScript 文 字 を 取 得 6. JavaScript 文 字 列 の 内 容 が 文 字 列 エスケープシーケンスのために 処 理 される:JavaScript string decoding これらのステップはブラウザがどのようなデコーディングを 行 うかを 示 しています したがって あなたはHTMLコンテキ ストの 積 み 重 ねの 中 で 内 容 が 安 全 に 構 築 されているかを 逆 の 順 序 で 確 かめる 必 要 があります : 1. クォートされた HTML 属 性 2. URL 3. JavaScript 文 字 列 もし あなたが 安 全 に content を 出 力 したいのであれば 以 下 のようにする 必 要 があるでしょう : <a href="javascript:hello('${cov:htmlescape(cov:uriencode(cov:jsstringescape(content)))}')" >... では どうやれば どのコンテキストでエスケープが 必 要 なのかわかるのでしょうか? HTML5 のフルパーサーと 同 じこと を 頭 でする 必 要 がありますか?ラッキーなことに 答 えはノーです あなたが 遭 遇 するであろう ほとんどのすべての 状 況 で 本 当 に 理 解 し 考 慮 しなければならないのは13の 重 要 なコンテキストです 本 ドキュメントの 残 りではこれらについて 見 ていきます もし あなたが 動 的 なデータをここでカバーされていないコンテキストに 挿 入 したいのであれば あなたの 身 近 なセキュ リティエキスパートに 相 談 してください ひとりで 解 決 しようとブラウザをもてあそぶのはやめましょう これは 真 にきち んと 確 認 すべき 事 柄 だからです Coverity Security Library(コベリティセキュリティライブラリ) Coverity Security Library (CSL) は 動 的 なHTMLやSQLデータを 扱 う 場 合 に 役 立 つ セキュアで 小 さく 扱 いや すいフリーライブラリです CSL は GitHub から 取 得 できます: https://github.com/coverity/coverity-security-library Maven Central からはこちらで す: http://mvnrepository.com/artifact/com.coverity.security このドキュメントでは Webページに 動 的 なデータを 挿 入 する 場 合 に 助 けとなるエスケーパーとサニタイザの 実 装 リファ レンスとしてCSLを 使 用 します また ここではJava Expression Language (EL) 表 記 を 利 用 します 通 常 のJava の 関 数 も 利 用 可 能 であることに 注 意 してください 何 が 使 えるかは GitHub 上 のドキュメントを 参 照 ください インストールと 使 用 方 法 GitHub 上 にドキュメントが 存 在 します また どのようにあなたのアプリケーションに CSL を 埋 め 込 むか そして Java JSPまたは EL からどのように 使 用 するかについては コードサンプルが 用 意 されています 対 処 方 法 通 常 のHTML 要 素 タグのボディ 内 部 でいくつかの 動 的 データを 表 示 したい これは 最 も 簡 単 なケースです 動 的 な 内 容 を 単 にHTMLエスケープします : 4

<div> Hello ${cov:htmlescape(name)}! </div> HTML 属 性 タグのための 属 性 値 を 動 的 に 構 築 したい まず バックティック(')ではなく ダブルまたはシングルクォートのいずれかで 属 性 が 括 られているか 確 認 してください すべての 属 性 について 確 認 する 必 要 があります クォートされていないHTML 属 性 を 使 用 してはいけません! 次 に 属 性 がURL JavaScript CSSまたは 他 の 埋 込 み 言 語 でないかをチェックします 属 性 のタイプのセクションを 探 して 確 認 します もしそれらのタイプでなければ HTMLエスケーパーを 使 用 します : <div data="${cov:htmlescape(content)}"> HTML 属 性 内 部 のJavaScript 文 字 列 JavaScriptを 含 む 属 性 にいくつかの 動 的 データを 挿 入 したい まず HTML 属 性 のセクションで 見 たように 属 性 が 適 切 にクォートされているかを 確 認 します 次 に 挿 入 しようとしているデータがJavaScript 文 字 列 であり その 文 字 列 がクォートされていることを 確 認 します もしあなたが 文 字 列 の 外 にデータを 挿 入 しようとしているのであれば CSLのドキュメントを 参 照 し 他 のJavaScript 文 字 列 エスケーパー(JavaScript string escaper)を 参 照 してください 次 に このコンテキストがネストされており 順 序 が 重 要 であるかを 識 別 します ブラウザがデコードする 順 序 が 以 下 で あ る 場 合 : 1. HTML 属 性 2. JavaScript 文 字 列 この 場 合 は JavaScript 文 字 列 エスケーパー(JavaScript string escaper)を 適 用 する 必 要 があり その 後 次 の ようにHTMLエスケーパーを 動 的 データに 使 用 します : <div onclick="jsfunc('${cov:htmlescape(cov:jsstringescape(content))}')"> クリックしてください </div> HTML 属 性 内 のフルURL 属 性 に リンクやiframeなどのURLとして 認 識 されるURLを 動 的 に 挿 入 したい まず HTML 属 性 のセクションでみたように 属 性 が 適 切 にクォートされているかを 確 認 します 次 に そのURLがflashファイルのためのobjectタグや script タグではなく あなたの 制 御 するサーバに 限 定 される 必 要 がないことを 確 認 します 5

ここまでくると これはネストコンテキストである 可 能 性 が 高 く XSSを 防 ぐためにフルURLを 正 しくエスケープでき ないでしょう しかし CSLは javascript: スキーマで 始 まるような 危 険 をともなうURLを 安 全 なURLに 変 換 する asurl と 呼 ばれるエスケーパー 関 数 を 備 えています asurl を 正 しく 使 用 するためには 構 成 されたフルURLに 対 して 適 用 する 必 要 があります これらを 踏 まえて 我 々の asurl 関 数 とHTMLエスケーパーを 適 用 すると 次 のようになります : <a href="${cov:htmlescape(cov:asurl(content))}"> クリックしてください </a> HTML 属 性 内 のCSS 文 字 列 font-family 属 性 や 属 性 内 に 指 定 したいCSS セレクターのようなCSS 文 字 列 の 操 作 をユーザに 制 御 させたい 願 わくば このあたりでコツがつかめてきているのではないでしょうか 以 下 のように 進 めます : 1. 属 性 をクォート " でくくる 2. CSS 文 字 列 をクォート でくくる 3. 属 性 内 のCSSのコンテキストの 重 なりを 識 別 する そしてCSS 文 字 列 エスケーパーを その 後 HTMLエスケーパーを 適 用 します : <a style="font-family:'${cov:htmlescape(cov:cssstringescape(content))}'"> クリックしてください </a> JavaScriptの 文 字 列 いくつかの 動 的 なデータを 文 字 列 に 書 き 込 むことでJavaScriptブロックに 渡 したい この 時 点 でネストされたコンテキストであるはずですが Webサイトを 複 数 のブラウザで 動 作 するように 作 成 したことが ある 方 であれば 誰 でも 知 っているように ブラウザは 変 化 に 富 んでいて 刺 激 的 で 正 すのが 困 難 な 状 況 を 好 むものなの で す! 幸 運 なことに 今 回 はそれほど 困 難 な 状 況 ではありませんし 我 々がすべきことは JavaScript 文 字 列 エスケーパーを 適 用 することです ここで 取 り 上 げるべき 注 意 点 としては あなたのJavaScript 文 字 列 エスケーパーが < を 一 般 的 な 文 字 と 同 様 にエスケープすることを 確 認 することです もしあなたがCSLを 使 用 しているのであれば 確 認 の 必 要 はあり ません 以 下 に 対 処 方 法 を 示 します : <script type="text/javascript"> var str = '${cov:jsstringescape(content)}'; // 文 字 列 'str' で 何 かを 行 う </script> 6

JavaScriptの 文 字 列 内 のHTML 動 的 データを あとでJavaScriptから 使 用 されるHTML 部 分 に 挿 入 したい 先 ほどの 例 と 同 様 に 動 的 データはJavaScript 文 字 列 の 一 部 となるため JavaScript 文 字 列 エスケーパーを 使 用 す る 必 要 があります しかし HTMLの 内 容 もエスケープする 必 要 も 出 てくるため HTMLエスケーパーも 使 用 します : <div id="formycontent"></div> <script> var foo = "<h1>${cov:jsstringescape(cov:htmlescape(content))}</h1>"; $("#formycontent").html(foo); </script> JavaScriptの 数 値 動 的 な 数 値 をscriptブロックに 書 き 込 むことでJavaScriptに 渡 したい 任 意 のデータをその 意 味 を 保 持 したまま 数 値 に 変 換 する 理 にかなった 方 法 は 存 在 しないため 我 々は 渡 された 文 字 列 が 数 値 であることを 確 認 し 返 す 関 数 を 提 供 しており そのデフォルト 値 として0を 返 すしくみをとっています このようなシ ナリオで 安 全 に 使 うには 次 のようになります : <script type="text/javascript"> var num = ${cov:asnumber(content)}; // 数 値 'num' を 使 用 して 何 かを 行 う </script> CSS 文 字 列 font-family ディレクティブのようなCSS 文 字 列 をユーザに 操 作 させたいか またはCSSセレクターを style タグ 内 で 指 定 したい scriptブロック 内 のJavaScript 文 字 列 のように これも 簡 単 なものの1つです 単 にあなたの 文 字 列 がクォートされて いるか 確 認 し そしてCSLのCSS 文 字 列 エスケーパー(CSS string escaper)を 使 用 します : <style> #foo[id ~= '${cov:cssstringescape(content)}'] { background-color: pink!important; } </style> 7

CSS 文 字 列 内 のURL style タグ 内 で バックグラウンドイメージなどのCSS URLをユーザにコントロールさせたい まず CSS URLがシングルクォートかダブルクォートによって 適 切 にクォートされているかを 確 認 してください 次 に CSS 文 字 列 エスケーパーを 使 用 する 必 要 があります 我 々は 単 なる 一 般 的 なJavaScriptのエスケーパーでは なく CSLのエスケーパーを 使 用 することを 強 くお 薦 めします これは CSSに 対 するセキュリティ 要 求 はJavaScript 文 字 列 とは 少 し 異 なるからです JavaScriptやHTML 内 のURLとは 異 なり 最 近 のCSSパーサーは javascript: や 他 の 特 殊 な 害 を 及 ぼす( 例 えば data: を 含 むHTMLの 内 容 など)URLは 翻 訳 しないため URLの 内 容 に 対 して 注 意 を 払 う 必 要 はありません : <style> #foo { background: url('${cov:cssstringescape(content)}'); } </style> CSSカラー バックグラウンドカラーのようなCSSカラーをユーザに 操 作 させたい CSSカラーは 文 字 列 内 に 指 定 されないため このコンテキストではエスケープすることができず いくつかの 種 類 の 検 証 やフィルタリングを 行 う 必 要 があります CSLではカラーの 指 定 として インジェクション 攻 撃 を 防 ぐ 16 進 数 またはテキ ストを 許 可 するフィルターを 提 供 しており 以 下 のように 使 用 することができます : <style> #foo { background-color: ${cov:ascsscolor(content)}; } </style> HTML 属 性 内 のURLフラグメント 動 的 なフラグメントをもつURLを 出 力 したい フ ラ グ メント( # 文 字 に 続 く)はURLのための 単 なるテキストです これに 付 随 するエスケープは 存 在 しないため 親 の コンテキストのエスケーパーを 使 用 する 必 要 があります これらは 時 にはURLエンコードされていますが ブラウザは それをデコードはしません 以 下 の 例 では HTML href 属 性 内 のURLの 出 力 と フラグメントがHTMLのためにエス ケープされていることが 確 認 されています : 8

<a href="/path/page?elmt=1#${cov:htmlescape(content)}"> リンク 名 </a> URLクエリ 文 字 とパス 要 素 パスもしくはクエリ 文 字 のいずれかに 動 的 データを 含 むURLを 出 力 したい その 他 のURLの 要 素 は 動 的 ではない URLのこれらの 要 素 :パス クエリ 文 字 の 要 素 名 クエリ 文 字 の 要 素 値 は URLエンコードにより 安 全 にできます CSL uriencode 関 数 がこれを 行 います すべてのURLエンコーダについてこれが 正 しいわけではないことに 注 意 してく ださい また CSLを 使 用 していない 場 合 は (HTMLエスケーパーとURLエンコーダを 使 用 した)ネストされた 方 法 が 必 要 になる 可 能 性 があります : <!-- 'name' と 'value' が 動 的 データであると 過 程 --> <a href="http://example.com/path/?${cov:uriencode(qselmtname)}= ${cov:uriencode(qselmtvalue)}"> クリックしてください </a> コベリティについて デベロップメントテストのリーダーである Coverity, Inc. は ソフトウェアの 障 害 から 自 社 ブランドと 最 終 損 益 を 守 ろう とする 企 業 に 信 頼 をおかれている 企 業 です 1,100を 超 えるCoverityの 顧 客 は 自 動 的 にソース コードをテストし 製 品 のクラッシュ 誤 作 動 セキュリティ 脆 弱 性 そして 致 命 的 な 障 害 につながるソフトウェアの 欠 陥 を 検 出 するCoverity デベロップメントテストの 製 品 パッケージを 採 用 しています コベリティは Foundation Capital およびBenchmark Capitalからの 資 金 提 供 を 受 けています コベリティジャパン 株 式 会 社 Website: http://www.coverity.com/html_ja/