web-dev-qa-db-ja.com

Reactでは、dangerouslySetInnerHTMLを使用しない限り、XSSから安全ですか?

Reactのみを使用して、DOMを直接操作することはありません。dangerouslySetInnerHTMLは使用しません。XSSについて心配する必要はありますか?言い換えれば、 Reactの他の安全でない使用法はありますか?

XSSから身を守るために覚えておかなければならない唯一のことは、Wordの名前に危険なプロパティを使用しないことでした。しかし、それはそんなに簡単ですか?

ここでは、Reactエンジン自体のバグのリスクは考慮していません。 一般的なストアのハイドレーションの間違い)など、Reactに直接関連しないものには興味がありません =。

2
Anders

「安全」とは言えません。 ReactJSは、意図したとおりに使用する限り、設計上、かなり安全です。特に、dangerouslySetInnerHTMLは使用しないでください。

ただし、専用の攻撃者がアプリのXSSロードブロッキングを回避する方法を見つける方法は他にもあります。それらのいくつかはこれにリストされています DailyJSの記事

  • Reactユーザー提供のオブジェクトからコンポーネントを作成する;
  • ユーザー提供のhref属性を含むリンクのレンダリング、または挿入可能な属性を含む他のHTMLタグ(linkタグ、HMTL5インポート);
  • 要素のdangerouslySetInnerHTMLプロパティを明示的に設定します。
  • ユーザー提供の文字列をeval()に渡します。

Trust but Verifyが最も安全なスタンスです。デフォルトでは、ユーザー入力を信頼してはなりません。 Reactがクライアント側のほとんどのセキュリティを処理しますが、すべてのユーザー入力/関数に対してサーバー側のセキュリティチェックも実装するようにしてください。

3
geforceGTX480