15

私は単一ページの webapp に取り組んでいます。DOM ノードを直接作成してレンダリングを行っています。特に、ユーザーが提供するすべてのデータは、 でテキスト ノードを作成することによってページに追加されますdocument.createTextNode("user data")

このアプローチは、HTML インジェクション、クロス サイト スクリプティング (XSS)、およびユーザーが実行できるその他すべての悪事の可能性を回避しますか?

4

2 に答える 2

14

プレーンテキストノードを作成するので、そうです。

ただし、安全でない方法を使用して、データが入力されているチャネルからデータを取得することにより、XSS の問題が発生する可能性がcreateTextNodeあります。

例: 以下は安全ではありません:

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

…しかし、危険はechoJavaScript ではなくPHP にありますcreateTextNode

于 2012-07-25T16:42:44.823 に答える
1

はい、XSS セーフsomeElement.innerText = "..."です。

(兄弟の回答は、XSS に脆弱な PHP スニペットを含めることで混乱を招きます。)

于 2021-09-27T11:22:50.440 に答える