2012-07-25 20 views
10

私は1ページのwebappで作業しています。私はDOMノードを直接作成してレンダリングを行っています。特に、document.createTextNode("user data")のテキストノードを作成することによって、ユーザーが入力したすべてのデータがページに追加されます。createTextNodeはHTMLインジェクションとXSSから完全に安全ですか?

このアプローチは、HTML注入、クロスサイトスクリプティング(XSS)、およびユーザーが行う可能性のあるその他の悪い事態を回避しますか?

答えて

9

プレーンテキストノードが作成されます。

XSSの問題を作成するには、安全でない方法を使用して、入力されているどのチャネルからでもcreateTextNodeにデータを取得することができます。

document.createTextNode('<?php echo $_GET['xss']; ?>'); 

...しかし、危険性はPHP echo、ないのJavaScript createTextNodeからである:以下は、危険なだろう。

+0

私はPHPに精通していません。この例では、ユーザーが他の場所からデータを要求し、ページにテキストとして挿入することができますか? –

+0

@breischl - PHPはURLのクエリ文字列(外部データ)から入力を取り出し、エスケープせずに出力にドロップします。 – Quentin

+0

しかし、それが何であっても、プレーンテキストとして出力されるでしょう。だから、テキストを表示する以外に、ブラウザに何かをさせることはできませんでしたか? –

関連する問題