XSS
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*XSS とは [#sb9aae5c]
**名称 [#s45697e4]
-Cross-Site Scripting
-クロスサイトスクリプティング
**概要 [#pa5d273a]
-[[Webアプリ]]の[[脆弱性]]を利用して、ブラウザに対して攻...
--Webページの入力データに含まれるスクリプトを[[サニタイズ...
-不正な処理は、クライアント側で実行される。(サーバ側で実...
-攻撃者は不正なスクリプトを含むページを表示させることで、...
++攻撃者が用意したWebサイト上に、攻撃対象の脆弱性を持った...
---リンクは攻撃者のWebサイトだけでなく、掲示板やSNS、メー...
++攻撃者のWebサイト上のリンクをクリックすると、攻撃対象と...
---スクリプトによって表示されるのは、入力欄やボタンなど。
++攻撃者が仕込んだスクリプトのリンクをクリックすると、閲...
-攻撃により発生し得る被害
--利用者の個人情報等の盗難
--利用者のPC上のファイルの破壊、PCに[[バックドア]]が仕掛...
-Cross-Site とは
--「[[Origin]]」参照
*XSSの分類 ([[CWE]]における分類) [#b267969c]
**Webページの出力処理の不備による脆弱性 [#f3cd2d72]
***反射型 (非持続型) [#c77ed70d]
--Reflected XSS Attacks
--[[フィッシング]]などで偽装した罠サイトに誘導してから、...
--攻撃者のJavaScriptの配置場所
---JavaScriptが攻撃対象のWebサイトとは別のWebサイトにある。
---攻撃対象のWebサイトの作りが、入力値を表示する箇所の[[...
***格納型 (持続型) [#n6136a98]
--Stored XSS Attacks
--Persistent XSS Attacks
--攻撃対象のWebサイト([[SNS]]、[[Webメール]]等)に投稿に...
--攻撃者のJavaScriptの配置場所
---JavaScriptが攻撃対象のデータベース等に保存される。
**JavaScriptを用いたWebページの出力処理([[DOM]]操作)の不...
***Dom Based XSS [#o1d3f3bb]
*攻撃の内容 [#mfef26a0]
**直接的な攻撃方法 [#za1b7f14]
-[[Cookie]]を盗む
-偽の[[JavaScript]]を実行する
-偽情報や偽装した入力フォームを表示する
**偽装したWebページの特徴 [#j5458d03]
-URLが正規のWebサイトと同じ
--URLでWebページの表示内容が正規のものであるか(偽装され...
-[[HTTPS]]の場合、[[SSL]]証明書が正規のWebサイトと同じ
--[[SSL]]証明書を確認してもWebページの内容が正規のもので...
*対策 [#h4d2a4e6]
**対策(Webアプリケーション) [#y14d0fa9]
***エスケープ処理 [#b518e46f]
-エスケープの種類
--[[HTML]]の[[特殊文字]]のエスケープ (Output Escaping)
---出力する値に含まれる[[HTML]]の[[メタ文字]]を通常の文字...
--JavaScriptの[[特殊文字]]のエスケープ (JavaScript Escapi...
---出力する値に含まれる[[JavaScript]]の[[特殊文字]]を通常...
--イベントハンドラの値のエスケープ (Event handler Escaping)
-[[HTML]]の[[特殊文字]]のエスケープ
--HTMLの要素に含まれる文字に対するエスケープ
---「<」->「&lt;」 ※必須
---「&」->「&amp;」 ※必須
---「>」->「&gt;」
--HTMLの属性値に含まれる文字に対するエスケープ
---「<」->「&lt;」 ※必須
---「&」->「&amp;」 ※必須
---「>」->「&gt;」
---「"」->「&quot;」 ※必須
---「'」->「&#39;」
-[[JavaScript]]の[[特殊文字]]のエスケープ
--イベントハンドラの引数に含まれる文字に対するエスケープ
---「\」->「\\」
---「'」->「\'」
---「"」->「\"」
---「改行」->「\n」
-script要素内にあるスクリプトに対する対策
--そもそもscript要素内のスクリプトの文字列リテラルを動的...
--カスタムデータ属性を利用して取得して設定する。
-スクリプトのスキームを不許可にする
--属性値にURLを指定する属性にスクリプトのスキームが指定さ...
--JavaScriptスキーム(javascript:)、VBScriptスキーム(vbscr...
-HTMLの属性値(URL)に対する対策
--対象となるHTMLタグと属性
---aタグのhref属性
---imgタグのsrc属性
--対策の内容
---HTTPスキーム(http:)とHTTPSスキーム(https:)であることを...
---URLがHTTPや[[HTTPS]]で始まるもののみ許可する。
---HTMLエスケープによるURLのパーセントエンコードをする。
-エスケープ処理の関数 (PHP)
--htmlspecialchars()
***[[HTTP]]レスポンスヘッダの指定 [#rfb6589d]
-Content-typeのcharset
--文字エンコーディングを正しく指定する。
-X-XSS-Protection
--[[Webブラウザ]]のXSSフィルタ機能(反射型XSSを無効にする...
--[[Webサーバ]]で出力するようにすると便利。
-Content-Security-Policy
--コンテンツセキュリティポリシー([[CSP]])を設定する。
***HTMLタグの属性値 [#p6294776]
-属性値をダブルコート「"」で囲み必ず文字列として扱われる...
***参考情報 [#b457528d]
-第三者が提供するスクリプトファイルを使わない。
--任意のサイトが提供するJavaScriptファイルを自サイトに埋...
--提供元が信用できない場合は、使うべきではない。(そもそ...
**対策(その他) [#v8ccd529]
-[[Cookie]]にHttpOnly属性を指定する。
--[[HTTP]]ヘッダからしか[[Cookie]]にアクセスできなくなる
--[[JavaScript]](document.cookie)を使って[[Cookie]]にアク...
--古いブラウザはHttpOnly属性に対応していないものがある
***参考情報 [#c0738a02]
-[[Cookie]]にdomain属性を指定(Cookieの有効範囲を自身のウ...
*関連サイト [#w79ca460]
-CWE-79: Improper Neutralization of Input During Web Page...
https://cwe.mitre.org/data/definitions/79.html
-CWE-79 クロスサイトスクリプティング - [[JVN]]~
https://jvndb.jvn.jp/ja/cwe/CWE-79.html
-DOM Based XSSに関する脆弱性の届出が急増 (2013.1.29) - [[...
https://www.ipa.go.jp/about/technicalwatch/20130129.html
*関連用語 [#sbcd1a7c]
-[[セキュリティ]]
-[[セッション・ハイジャック]]
-[[サニタイズ]]
-[[ヌルバイト攻撃]]
-[[フィッシング]]
-[[SOP]] -Same Origin Policy(同一生成元ポリシー)
-[[WAF]]
-[[CSRF]] -クロスサイトリクエストフォージェリ
-[[XST]] -Cross-site Tracing
終了行:
*XSS とは [#sb9aae5c]
**名称 [#s45697e4]
-Cross-Site Scripting
-クロスサイトスクリプティング
**概要 [#pa5d273a]
-[[Webアプリ]]の[[脆弱性]]を利用して、ブラウザに対して攻...
--Webページの入力データに含まれるスクリプトを[[サニタイズ...
-不正な処理は、クライアント側で実行される。(サーバ側で実...
-攻撃者は不正なスクリプトを含むページを表示させることで、...
++攻撃者が用意したWebサイト上に、攻撃対象の脆弱性を持った...
---リンクは攻撃者のWebサイトだけでなく、掲示板やSNS、メー...
++攻撃者のWebサイト上のリンクをクリックすると、攻撃対象と...
---スクリプトによって表示されるのは、入力欄やボタンなど。
++攻撃者が仕込んだスクリプトのリンクをクリックすると、閲...
-攻撃により発生し得る被害
--利用者の個人情報等の盗難
--利用者のPC上のファイルの破壊、PCに[[バックドア]]が仕掛...
-Cross-Site とは
--「[[Origin]]」参照
*XSSの分類 ([[CWE]]における分類) [#b267969c]
**Webページの出力処理の不備による脆弱性 [#f3cd2d72]
***反射型 (非持続型) [#c77ed70d]
--Reflected XSS Attacks
--[[フィッシング]]などで偽装した罠サイトに誘導してから、...
--攻撃者のJavaScriptの配置場所
---JavaScriptが攻撃対象のWebサイトとは別のWebサイトにある。
---攻撃対象のWebサイトの作りが、入力値を表示する箇所の[[...
***格納型 (持続型) [#n6136a98]
--Stored XSS Attacks
--Persistent XSS Attacks
--攻撃対象のWebサイト([[SNS]]、[[Webメール]]等)に投稿に...
--攻撃者のJavaScriptの配置場所
---JavaScriptが攻撃対象のデータベース等に保存される。
**JavaScriptを用いたWebページの出力処理([[DOM]]操作)の不...
***Dom Based XSS [#o1d3f3bb]
*攻撃の内容 [#mfef26a0]
**直接的な攻撃方法 [#za1b7f14]
-[[Cookie]]を盗む
-偽の[[JavaScript]]を実行する
-偽情報や偽装した入力フォームを表示する
**偽装したWebページの特徴 [#j5458d03]
-URLが正規のWebサイトと同じ
--URLでWebページの表示内容が正規のものであるか(偽装され...
-[[HTTPS]]の場合、[[SSL]]証明書が正規のWebサイトと同じ
--[[SSL]]証明書を確認してもWebページの内容が正規のもので...
*対策 [#h4d2a4e6]
**対策(Webアプリケーション) [#y14d0fa9]
***エスケープ処理 [#b518e46f]
-エスケープの種類
--[[HTML]]の[[特殊文字]]のエスケープ (Output Escaping)
---出力する値に含まれる[[HTML]]の[[メタ文字]]を通常の文字...
--JavaScriptの[[特殊文字]]のエスケープ (JavaScript Escapi...
---出力する値に含まれる[[JavaScript]]の[[特殊文字]]を通常...
--イベントハンドラの値のエスケープ (Event handler Escaping)
-[[HTML]]の[[特殊文字]]のエスケープ
--HTMLの要素に含まれる文字に対するエスケープ
---「<」->「&lt;」 ※必須
---「&」->「&amp;」 ※必須
---「>」->「&gt;」
--HTMLの属性値に含まれる文字に対するエスケープ
---「<」->「&lt;」 ※必須
---「&」->「&amp;」 ※必須
---「>」->「&gt;」
---「"」->「&quot;」 ※必須
---「'」->「&#39;」
-[[JavaScript]]の[[特殊文字]]のエスケープ
--イベントハンドラの引数に含まれる文字に対するエスケープ
---「\」->「\\」
---「'」->「\'」
---「"」->「\"」
---「改行」->「\n」
-script要素内にあるスクリプトに対する対策
--そもそもscript要素内のスクリプトの文字列リテラルを動的...
--カスタムデータ属性を利用して取得して設定する。
-スクリプトのスキームを不許可にする
--属性値にURLを指定する属性にスクリプトのスキームが指定さ...
--JavaScriptスキーム(javascript:)、VBScriptスキーム(vbscr...
-HTMLの属性値(URL)に対する対策
--対象となるHTMLタグと属性
---aタグのhref属性
---imgタグのsrc属性
--対策の内容
---HTTPスキーム(http:)とHTTPSスキーム(https:)であることを...
---URLがHTTPや[[HTTPS]]で始まるもののみ許可する。
---HTMLエスケープによるURLのパーセントエンコードをする。
-エスケープ処理の関数 (PHP)
--htmlspecialchars()
***[[HTTP]]レスポンスヘッダの指定 [#rfb6589d]
-Content-typeのcharset
--文字エンコーディングを正しく指定する。
-X-XSS-Protection
--[[Webブラウザ]]のXSSフィルタ機能(反射型XSSを無効にする...
--[[Webサーバ]]で出力するようにすると便利。
-Content-Security-Policy
--コンテンツセキュリティポリシー([[CSP]])を設定する。
***HTMLタグの属性値 [#p6294776]
-属性値をダブルコート「"」で囲み必ず文字列として扱われる...
***参考情報 [#b457528d]
-第三者が提供するスクリプトファイルを使わない。
--任意のサイトが提供するJavaScriptファイルを自サイトに埋...
--提供元が信用できない場合は、使うべきではない。(そもそ...
**対策(その他) [#v8ccd529]
-[[Cookie]]にHttpOnly属性を指定する。
--[[HTTP]]ヘッダからしか[[Cookie]]にアクセスできなくなる
--[[JavaScript]](document.cookie)を使って[[Cookie]]にアク...
--古いブラウザはHttpOnly属性に対応していないものがある
***参考情報 [#c0738a02]
-[[Cookie]]にdomain属性を指定(Cookieの有効範囲を自身のウ...
*関連サイト [#w79ca460]
-CWE-79: Improper Neutralization of Input During Web Page...
https://cwe.mitre.org/data/definitions/79.html
-CWE-79 クロスサイトスクリプティング - [[JVN]]~
https://jvndb.jvn.jp/ja/cwe/CWE-79.html
-DOM Based XSSに関する脆弱性の届出が急増 (2013.1.29) - [[...
https://www.ipa.go.jp/about/technicalwatch/20130129.html
*関連用語 [#sbcd1a7c]
-[[セキュリティ]]
-[[セッション・ハイジャック]]
-[[サニタイズ]]
-[[ヌルバイト攻撃]]
-[[フィッシング]]
-[[SOP]] -Same Origin Policy(同一生成元ポリシー)
-[[WAF]]
-[[CSRF]] -クロスサイトリクエストフォージェリ
-[[XST]] -Cross-site Tracing
ページ名: