日々のコンピュータ情報の集積と整理

Dr.ウーパのコンピュータ備忘録

ラベル XSS の投稿を表示しています。 すべての投稿を表示
ラベル XSS の投稿を表示しています。 すべての投稿を表示

2015年2月27日金曜日

JavaScript:element.setAttributeしたときの、HTMLはどうなっているか?

本投稿の要約

setAttribute を使用することで、HTML 構造の破壊を防ぐことはできますが、危険な値そのものが入り込むことは防ぐことはできません。

別途、危険な値が入り込まないような仕組み(そもそも設定しない、値のエスケープ処理等)を実装する必要があります。


イントロダクション

JavaScript にて、「DOM Based XSS」の脆弱性を埋め込むのを防ぐためには、document.write や element.innerHTML などを使うのではなく、以下のように DOM 操作用メソッドを使用すると良いとされています。

入力されたテキストをブラウザに表示されているドキュメントの要素の属性に設定:
element.setAttribute(attribute, input_text);

attribute : 設定する属性の名前
input_text : 入力されたテキスト
element : 属性を設定する要素(element オブジェクト)


このとき、入力されたテキストを属性値として設定した要素の HTML が、入力されたテキストによってどうなるのか気になりませんか?

そこで、実際に JavaScript でコードを作成して試してみました。

JavaScript:document.createTextNodeをappendChildしたときの、HTMLはどうなっているか?

イントロダクション

JavaScript にて、「DOM Based XSS」の脆弱性を埋め込むのを防ぐためには、document.write や element.innerHTML などを使うのではなく、以下のように DOM 操作用メソッドを使用すると良いとされています。

入力されたテキストをブラウザのドキュメントに表示:
element.appendChild(document.createTextNode(input_text));

input_text : 入力されたテキスト
element : テキストを追加する親要素(element オブジェクト)


このとき、テキストを追加した親要素の HTML が、入力されたテキストによってどうなるのか気になりませんか?

そこで、実際に JavaScript でコードを作成して試してみました。

セキュリティ対策:JavaScriptでHTML操作をする人は必読!IPAテクニカルウォッチ 『DOM Based XSS』に関するレポート

イントロダクション

誰でも手軽に使えて便利な JavaScript ですが、書き方を間違えると重大なセキュリティ上の問題(脆弱性)を引き起こしてしまいます。

そんな JavaScript を使ったプログラムの脆弱性の中でも、うっかり作りこんでしまいがちなのが、「DOM Based XSS」ではないでしょうか?

ラベル

.htaccess (2) 「Blogger の各要素の周りに太い枠線を設置することで、パネルが並んでいるようなデザインにする」シリーズ (4) 「Bloggerの記事に目次をJavaScriptで自動的に付与する」3rdシリーズ (4) 「Bloggerの記事に目次をJavaScriptで自動的に付与する」シリーズ (25) 「ナビゲーションをでっかくして目立たせて使ってもらおう!」シリーズ (5) 404 (2) 64bit (1) AA (3) AAアニメーション (2) Adobe Photoshop Elements 2.0 (4) Aero Glass (1) Amazon (8) Amazonギフト券 (1) Android (18) Apple (1) ARC (2) ascii (5) Atom (4) BIOS (1) Blog (5) Blogger (262) Bloggerカスタマイズ (73) Bloggerテンプレート (20) Bloggerの機能 (37) Blogger障害 (1) BootCamp (1) buffalo (5) C# (7) canonical (5) canvas (1) CGI (3) Chrome (63) Closure Compiler (2) Comma Separated Words to Square-Bracket Separated Words (5) compact (1) CPU使用率 (1) CSS (59) CSSD-S6T256NHG6Q (4) CSV (2) C言語 (4) Date (1) Debugging Tools for Windows (1) DLNA (1) DNS (6) DOM Based XSS (3) DTCP-IP (1) e-tax (9) Elements (1) Excel (17) Facebook (3) Facebookページ (1) FedEx (1) Feed (11) FeedBurner (1) Feedly (3) Feedウィジット (1) FeliCa (2) Firefox (8) Flash (1) fsuitl (1) ftp (1) gmail (1) Google (11) Google Analytics (14) Google Chart (1) Google Drive (10) Google Map (2) Google カレンダー (2) Google+ (5) Google検索 (9) GP-IB (1) GTmetrix (1) GUI (7) GX-HDMI/U2 (4) GYAO! (3) HDD (7) HDL2-AA6/E (1) HDMI (4) href (1) HTML (83) http (2) https (2) HydraVision (10) ICカードリーダライタ (7) IE (9) IE9 (2) iframe (3) IIS (1) IME (4) Insertキー (1) iOS (11) IPA (3) iPad (17) iPad Air (4) IPアドレス (1) ISO8601 (1) IT (1) iTunes (2) Java (2) JavaScript (166) JavaScriptで陥る罠 (5) JPKI利用者ソフト (6) json-in-script (1) JST (1) LAN (1) Lightning (1) LinkStation (12) Linkwithin (11) Linux (1) location (3) Logitec (1) Mac book (1) Mac book Pro (7) Marvell (1) MDV-ASG8300B (2) MEDIAS N-04C (1) MEDIAS X N-04E (17) microSD (1) Microsoft (1) Microsoft Excel 2010 (6) Microsoft PowerPoint 2010 (2) Microsoft Word 2010 (5) Mutation-based XSS (1) NAS (3) Navbar (4) NAVERまとめ (1) Nexus7 (6) NFC (2) NICT (1) noscript (4) nslookup (2) NTP (1) NVIDIA GeForce GTX 550 Ti (1) OS (3) OSシェア (1) PCV-RZ75CP (1) PDF (4) Perl (4) Photoshop (3) ping (6) PINGOO! (3) PIO病 (1) PLUS 断裁機 (1) png (1) PowerPoint (2) pre (1) PS4 (1) Punycode (1) Python (1) QRコード (3) QUIC (2) RSS (10) RSS Subscription Extension(by Google) (1) RSSリーダー (1) SAKURA Internet (2) ScanSnap (2) ScanSnap S1500 (2) Screen Capture (by Google) (1) script (1) SimCity (3) SimCity BuildIt (1) Skype (7) Skype(ストアアプリ) (1) slideshare (6) SpreadSheet (3) SSD (10) SVG (4) SyntaxHighlighter (23) text-align (1) text-shadow (1) textarea (1) ToDo (1) Tremii (1) Twitter (52) Twitter Analytics (1) Ubuntu (1) UI (8) URL (27) USB (3) USBケーブル (3) USBマウス (2) USB切替機 (2) VAIO (11) VBA (4) VBScript (1) VGN-FW92DS (1) Visual Studio (2) Visual Studio 2010 (4) w32tm (1) Wake On Lan (2) Web (41) webカメラ (1) Webサーバ (10) Webサービス (42) Webサイト (9) Webページ (17) Web運営 (1) Web制作 (15) Wi-Fi (1) WiiU (16) WiMAX (1) Windows (90) Windows 10 (18) Windows 7 (10) Windows Aero (1) Windows Live Mail (3) Windows Live Messenger (1) Windows Live Writer (5) Windows Live ムービーメーカー (2) Windows Vista (53) Windows XP (2) Windows8 (10) Windows8.1 (12) Wooo L32-V09 (2) Word (7) WZR-HP-G302H (2) XSS (3) Yahoo!スマホマネージャー (1) Yahoo!ニュース (2) YouTube (1) zenback (5) zenbackキーワーズ (1) アーカイブ (1) アイ・オー・データ機器 (1) アイキャッチ (1) アイディア (1) アップグレード (3) アップデート (6) アニメ (4) アニメーション (6) アプリ (1) アルファベット (2) イベント (1) インストール失敗 (1) インターネット (13) インデクサ (2) ウィルスバスター (7) ウィルス対策 (1) ウィンドウ (1) ウェブマスターツール (2) エイプリルフール (1) えきねっと (1) エクスプローラー (1) エラー (12) エラーダイアログ (2) オーディオ (2) おくだけ充電 (1) おもしろい (1) お知らせ (7) お買い得 (1) お名前.com (1) カスタマイズ (6) カメラ (1) カレンダー (1) カンマ演算子 (1) キーボード (3) キャリアメール (3) キュレーション (2) クイックリファレンス版 (1) クラッシュ (3) グラフ (10) クリップボード (1) グローバルIPアドレス (1) クロール (1) ゲーム (12) コピー (6) コマンドプロンプト (4) コミュニケーション (1) コミュニティ (1) ごみ箱 (1) コメント (1) コンセプトコード (2) コンピュータ (1) コンピュータ化 (1) コンボボックス (1) サービス終了 (1) さくらのブログ (1) サンプルプログラム (4) シェア (4) シャットダウン (1) ショートカットキー (1) シンプル化 (1) シンボリックリンク (1) スイッチングハブ (1) スクリーン (1) スクリーンキャプチャ (5) スクロール (1) スタートメニュー (1) スタイルシート (12) ストリートビュー (1) スピーカー (3) スプレッドシート (4) スマートフォン (21) スライド (1) セキュリティ (56) セキュリテイ (1) ソースコード (14) ソフトウェア (3) ダイレクトメッセージ (31) ダウンロード (5) タスクマネージャ (1) タブコントロール (5) タブレット (6) ツイート (1) ツイッター (1) ついっぷる (1) ツールバー (1) ツリー構造 (1) ディスプレイ (17) ディスプレイドライバー (1) データ保存 (3) テキスト (1) テキストエディタ (2) デザイン (4) テザリング (1) デジタルズーム (1) デスクトップ (1) デスクトップ仮想化 (1) テスト (3) デバッグ (1) デベロッパーツール (4) デメリット (1) テレビ (5) テンプレート (2) ドキュメント (2) ドコモ (4) ドコモメール (4) ドコモメール(ブラウザ版) (6) ドメイン (5) ドライバ (1) ドライバー (1) トラブル (128) トラブルシューティング (123) ニコニコ動画 (37) ニュース (12) ニンテンドー3DS (1) ネットワーク (17) ネットワークアダプタ (1) ネットワークカメラ (1) ノートパソコン (6) ノートン (1) バージョン (3) バーチャルリアリティ (1) ハードディスク (1) パーマリンク (2) バグ (2) バグフィックス (1) パスワード (6) パソコン (39) パソコン周辺機器 (2) ハッカソン (1) バックアップ (1) ハッシュ (2) バッチファイル (2) バッテリー (1) はてなブックマーク (4) ハングアップ (1) ビジネス (1) ビデオ通話 (1) ファイル名 (1) フィード (7) フィッシング (1) フォルダ (1) ブックマーク (3) ブックマークレット (2) フッター (3) ブラウザ (58) フリーズ (4) プリントスクリーン (3) ブルースクリーン (2) プレゼンテーション (3) ブログ (60) ブログアーカイブ (2) ブログサービス障害 (1) ブログパーツ (9) プログラミング (1) ブログランキング (1) ブログ運営 (12) ブログ制作 (33) ブログ編集 (1) プロジェクタ (2) プロセス (3) ベーシック認証 (1) ページビュー (1) ページ数 (1) ヘッドホン (2) ホイール (1) ポータブルHDD (1) ぼかし (3) ボタン (1) ホットキー (2) ボットネット (1) マイナンバーカード (1) マウス (3) マウスコンピュータ (1) まとめ (8) マルチディスプレイ (7) マルチブラウザ (1) ミス (3) メール (10) メールアプリ (2) メモ (2) メモリ (1) メモリ不足 (2) メリット (2) モザイク (6) もっと読む (1) モデム (2) モバイル (15) ユーザ権限 (2) ラベル (11) ラベルウィジットを構造化 (2) ラベルページ (1) ランタイムエラー (1) ランチャー (1) リダイレクト (1) リモート (1) リモートデスクトップ (7) リリース (1) リンク (2) ルータ (6) レイアウト (1) レジストリ (1) レポート (1) ログイン (2) 宛名面印刷 (2) 安全な画像処理 (7) 運営 (1) (2) (1) 音楽 (5) 音声 (1) 音飛び (1) 仮想デスクトップ (12) 仮想メモリ (1) 課題 (1) 過去のBloggerブログ投稿の紹介リンク作成プログラム (2) 画像 (16) 画像検索 (3) 画像処理 (7) 解説 (12) 解像度 (1) 回線 (1) 快適 (5) 改善 (3) 改善案 (2) 開発 (1) 外付けHDD (1) 外付けSSD (1) 確定申告 (9) 完全消去 (1) 管理者権限 (2) (1) 既読 (1) 機械化 (1) 記号 (1) 記録 (2) 起動時間 (2) 起動不能 (1) 技術 (4) 技術デモ (1) 救い (1) 共有ファイル (1) 強制終了 (2) (1) 型キャスト (1) 契約 (1) 検索 (28) 検索エンジン (14) 検索超入門 (1) 見出し (1) 固定キー機能 (1) 故障 (1) 誤検知 (1) 誤送信 (1) 効率 (1) 広告 (1) 更新日時 (2) 構造化 (2) 考え方 (2) 再インストール (1) 再生 (1) 最近の変更 (1) 作業 (5) 作業環境 (5) 作業自動化 (1) 作成日時 (1) 参照用リンク作成 (1) 思いつき (1) 思考の罠 (1) 思想 (1) 試算 (3) 資料 (7) 時間 (2) 時刻 (2) 時事 (2) 自炊 (2) 自動化 (1) 自動更新 (1) 失敗 (7) 取扱説明書 (1) 住民基本台帳カード (7) 充電 (1) 初回起動日 (1) 小数 (1) 障害 (9) 障害情報 (2) 障害対策 (1) 上級者向け (2) 情報 (6) 情報流出 (1) 情報漏えい (1) 新着情報 (3) 新着情報ガジェット作成 (11) 親機 (1) 人気の投稿 (7) 図形描画 (1) 数学 (2) 数字 (2) 制限 (5) 制御 (1) 整数 (1) 正規表現 (6) 脆弱性 (10) 接続障害 (3) 設備 (1) 節電 (1) 選択 (1) 騒音 (1) 属性 (1) 対策 (3) 対策検討中 (1) 待ち合わせ (1) 短縮URL (2) 断線 (1) 段組み (1) 遅延ロード (4) 中間者攻撃 (1) 通信速度 (2) 通知 (1) 提案 (1) 電源オプション (1) 電子化 (1) 電子書籍 (1) 電子証明書 (7) 電卓 (2) 電話 (1) 電話帳 (2) 塗りつぶし (3) 投稿 (4) 投稿エディタ (1) 投稿一覧 (1) 投稿数カウンタ (1) 統計情報 (2) 動画 (17) 動画編集 (2) 動的ロード (1) 特殊文字 (1) 日時 (3) 日付 (5) 日本語 (4) 日本語ドメイン (1) 日本語入力 (3) 入門 (2) 年賀状 (2) 廃棄 (1) 発表資料 (2) 比較 (2) (1) 表示期間 (1) 不具合 (14) 不透明 (1) 負荷 (3) 復旧 (3) 服装 (1) 文字 (6) 文字コード (5) 文字の配置 (1) 文字化け (3) 文字入力 (1) 文字認識 (1) 文章 (2) 文面印刷 (1) 壁紙 (1) 変更履歴 (2) 変数宣言 (1) 便利 (45) 便利機能 (5) 保存方法 (1) (3) 翻訳 (1) 埋め込みコンテンツ (2) 未読 (1) 未来 (4) 無線LAN (3) 無料楽曲 (1) 明るさ (1) 迷惑メール (2) 目次 (25) 予測変換 (1) 予定管理 (1) 曜日 (1) 要望 (1) 履歴 (1) 枠線 (1) (3)