レッツトライ!しもしも

エンジニアときどきイラストレーターのしもしもがレッツトライ!したことを描くブログ

[DOM Based XSS] jQueryで HTMLテキスト をエスケープする

   

Webアプリ開発ではおなじみのクロスサイト・スクリプティング(XSS)の脆弱性に関するおはなし。仕事で一度調べることがあったので、備忘録。

DOM Based XSS

DOM Based XSSの脆弱性とは、JavaScriptから動的にHTMLを操作しているアプリ全般に注意が必要な脆弱性です。

IPA(独立行政法人情報処理推進機構)でもレポートが作成され、注意を呼びかけています。

IPAテクニカルウォッチ 『DOM Based XSS』に関するレポート:IPA 独立行政法人 情報処理推進機構

技術・人材の両面から、ソフトウェア及び情報処理システムの健全な発展を支える戦略的なインフラ機能を提供するプロフェッショナル集団として日本経済の発展に貢献

かなり昔のレポートではありますが、このレポートに書かれていることは有効であり、とてもわかりやすく解説しています。

jQueryで HTMLテキスト をエスケープする

保守開発で、どうしても他がいじれなくて……。以下の方法が有用だったので、メモ。

上で紹介したIPAのレポートのうち「文脈に応じてエスケープ処理を施す方法」で対策しています。
ポイントは.text()です。
ここでエスケープするのですが、.text()はForm要素には使用できません。だから、一度.val()で取得してからエスケープするんですね。

以下のブログ記事を参考にさせていただきました。ありがとうございます。

参考資料

安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構

情報セキュリティ関連情報のユーザー、管理者、技術者に向けた発信、その前提となる情報収集、調査分析、研究開発、技術評価等の実施

XSSの脆弱性の解説で参考になったページのリンクを貼っておきます。復習がてら、一読しておくといいと思う。

シェアする

 - Tips , ,