タグ

HTMLとエスケープに関するmonjudohのブックマーク (9)

  • 構造化テキストの間違ったエスケープ手法について : 404 Blog Not Found

    2010年09月22日21:30 カテゴリLightweight Languages 構造化テキストの間違ったエスケープ手法について 昨晩のtwitter XSS祭りは、ふだんもtwitter.comは使わない私には遠くの祭り囃子だったのですが、せっかくの自戒の機会なので。 Kazuho@Cybozu Labs: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について 正しいアプローチは、全てのルールを同時に適用することです。 これは残念ながら(おそらく)必要条件であっても十分条件ではありません。 こういう(かなりええかげんな)正規表現でtweetをparseしていたとします。 re_http = '(?:https?://[\\x21-\\x7e]+)'; re_user = '(?:[@][0-9A-Za-z_]{1,15})'; re_hash

    構造化テキストの間違ったエスケープ手法について : 404 Blog Not Found
    monjudoh
    monjudoh 2010/09/24
    id:zorio HTMLを作るのは本質的にテキスト処理ではない。DOMツリーというデータ構造をシリアライズしたのがHTMLなので、テキスト処理でやっているものは全て簡易版に過ぎないというのを忘れてはいけない。
  • Google Slides: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more

    monjudoh
    monjudoh 2010/02/10
    エスケープの話が凄くためになった
  • まだまだあるクロスサイト・スクリプティング攻撃法

    前回はクロスサイト・スクリプティングのぜい弱性を突く攻撃の対策としてのHTMLエンコードの有効性を述べた。ただ,HTMLエンコードだけではクロスサイト・スクリプティング攻撃を完全に防御することはできない。そこで今回は,HTMLエンコードで対処できないタイプのクロスサイト・スクリプティング攻撃の手口と,その対策について解説する。 HTMLエンコードで対処できない攻撃には,次のようなものがある。 タグ文字の入力を許容している場合(Webメール,ブログなど) CSS(カスケーディング・スタイルシート)の入力を許容している場合(ブログなど) 文字コードを明示していないケースでUTF-7文字コードによるクロスサイト・スクリプティング <SCRIPT>の内容を動的に生成している場合 AタグなどのURLを動的に生成している場合注) 以下では,HTMLタグやCSSの入力を許容している場合と,文字コードを明

    まだまだあるクロスサイト・スクリプティング攻撃法
    monjudoh
    monjudoh 2007/07/04
    『CSS入力によるクロスサイト・スクリプティング』→expressionを使ってjsを仕込む 他に『UTF-7を利用したクロスサイト・スクリプティング』
  • 対策遅らせるHTMLエンコーディングの「神話」

    クロスサイト・スクリプティングという言葉は元々,WebアプリケーションのHTMLエンコード漏れなどを利用することによって第三者にJavaScriptを実行させる手法を指す。広義では,HTMLのエンコードによる画面改変などを含むこともある。 前回述べたように,クロスサイト・スクリプティングのぜい弱性はWebアプリケーションに見付かるぜい弱性の半分以上を占める。数年前から指摘されているにもかかわらず,一向になくならない。その理由として,クロスサイト・スクリプティング対策あるいはHTMLエンコード注1)に対する「神話」があり,正しい対策の普及を遅らせているように思う。その「神話」の数々について説明しよう。 注1)実体参照(entity reference)というのが正式だが,あまり普及していない用語なので,HTMLエンコードという用語を用いる 「すべからくHTMLエンコードすべし」が鉄則 HTM

    対策遅らせるHTMLエンコーディングの「神話」
    monjudoh
    monjudoh 2007/07/04
    シンプルにまとまってます。
  • XSS対策:JavaScriptのエスケープ(その3) - ockeghem's blog

    5/14の日記XSS対策:JavaScriptのエスケープ(その2) - ockeghem(徳丸浩)の日記に対して、id:hasegawayosukeさんからコメントを頂戴した。その内容は、JavaScriptに対応していないブラウザの場合に対する考慮が抜けているという趣旨だと理解した。 元の日記にも書いたように、私自身はJavaScriptの動的生成は(特殊な場合を除いて)好ましくないと考えているが、始めた以上は最後まで検討しようと思う。 解決すべき課題の整理 まず、解決すべき課題を整理しよう。元の日記では、JavaScriptを動的生成する(ただし、文字列リテラル内のデータに限る)場合のXSS対策として二段階のエスケープが必要であることを説明した。具体的には、(1)JavaScript文字列リテラルのエスケープとして、「"」、「'」、「\」のエスケープの実施、(2)HTMLとしてのエス

    XSS対策:JavaScriptのエスケープ(その3) - ockeghem's blog
    monjudoh
    monjudoh 2007/07/04
    『JavaScriptに対応していないブラウザの場合に対する考慮』jsとして解釈されなかった-->でSCRIPTタグ内の<!-- //-->が途中で切られてしまうことがあるんですと。
  • XSS対策:JavaScriptのエスケープ(その2) - ockeghem's blog

    5/11の日記XSS対策:JavaScriptなどのエスケープ - ockeghem(徳丸浩)の日記に対する金床さんのコメントに触発されて、JavaScriptのエスケープについて検討してみよう。ただし、現実のアプリケーション開発においては、私はJavaScriptの動的生成を推奨していないが、これはエスケープ処理をどのように考えるかと言うレッスンのつもりで検討することにする。 金床さんのコメントで紹介されたリンクには、以下のようなガイドライン案が提案されている。 JavaScriptの文字列でのエスケープ手順としては、以下が今のところ正解っぽい感じです。 1. 「\」を「\\」に置換する 2. 「"」を「\"」に置換する 3. 「'」を「\'」に置換する 4. 「/」を「\/」に置換する 5. 「<」を「\x3c」に置換する 6. 「>」を「\x3e」に置換する 7. 「0x0D(CR)

    XSS対策:JavaScriptのエスケープ(その2) - ockeghem's blog
    monjudoh
    monjudoh 2007/07/04
    『現実の開発においてはJavaScriptの動的生成をせず、hidden field値を参照するべきである。』
  • XSS対策:JavaScriptなどのエスケープ - ockeghem's blog

    昨日の日記に対して、id:ikepyonさんからトラックバックを頂戴した。内容はそちら(Tipsと考え方とXSS対策)を読んでいただくとして、興味深いテーマなので少し突っ込んでみたい。 # 日によって「です・ます」で書いたり、「だ・である」で書いているのは気分の問題なので、あまり気にしないでいただきたい Tipsだけでなく、物事の質を見極め、何が危険で、何が安全なのかということを考える必要があると思う。 昨日の記事は、(一般的な)XSS対策として、どの文字をエスケープするのが「質的」だったかを考えたかったのであって、あれをTipsととらえると確かに失敗する。 JavaScriptのスクリプトなどが入っている場合も昨日と同じ方法論で考えることは可能である。まずはこれを検討してみよう。 スクリプトがonXXXのイベントハンドラとして記述されている場合 この場合は、HTMLタグの属性値として

    XSS対策:JavaScriptなどのエスケープ - ockeghem's blog
  • 対策遅らせるHTMLエンコーディングの「神話」:ITpro - 葉っぱ日記

    はてブで 「すべてをエンコードすると決めた」といいながらメタキャラクタしかエスケープしないのはなぜ? と書いたら、b:id:HiromitsuTakagi さんに /↓hasegawayosuke「なぜ」<意味不明 / と言われてしまいますた。 全ての文字をエスケープしようなどと非現実的なことは言わないけれど(とはいえMicrosoft Anti-Cross Site Scripting Libraryのようにほとんど全ての文字を実体参照に置き換えるものもあるので、あながち非現実的とも言えないのかも知れない)、エスケープ対象を「'」「"」「<」「>」「&」の5文字に限定しているのは何かこの記事に書かれていない理由があるはずだと思ったからです。 この5文字さえ確実にエスケープしていれば XSS が防げるかというと、多分そうでもないだろうと個人的には思うわけでして。 例えば IE ではバックク

    対策遅らせるHTMLエンコーディングの「神話」:ITpro - 葉っぱ日記
  • ockeghem(徳丸浩)の日記 - XSS対策:どの文字をエスケープするべきなのか - コメント#1

    ITproの連載中に、id:hasegawayosukeさんから以下のようなコメントをいただいていました。 対策遅らせるHTMLエンコーディングの「神話」:ITpro - 葉っぱ日記 全ての文字をエスケープしようなどと非現実的なことは言わないけれど(とはいえMicrosoft Anti-Cross Site Scripting Libraryのようにほとんど全ての文字を実体参照に置き換えるものもあるので、あながち非現実的とも言えないのかも知れない)、エスケープ対象を「'」「"」「<」「>」「&」の5文字に限定しているのは何かこの記事に書かれていない理由があるはずだと思ったからです。 はてぶの方は見ていましたが、日記の方を見落としていまして、お返事が遅れました(_ _)。 なぜ、「<」、「>」、「&」、「"」、「'」の5種類の文字をエスケープするのかについては、色々考えるところがあります。

    ockeghem(徳丸浩)の日記 - XSS対策:どの文字をエスケープするべきなのか - コメント#1
  • 1