Reactのみを使用して、DOMを直接操作することはありません。dangerouslySetInnerHTML
は使用しません。XSSについて心配する必要はありますか?言い換えれば、 Reactの他の安全でない使用法はありますか?
XSSから身を守るために覚えておかなければならない唯一のことは、Wordの名前に危険なプロパティを使用しないことでした。しかし、それはそんなに簡単ですか?
ここでは、Reactエンジン自体のバグのリスクは考慮していません。 一般的なストアのハイドレーションの間違い)など、Reactに直接関連しないものには興味がありません =。
「安全」とは言えません。 ReactJSは、意図したとおりに使用する限り、設計上、かなり安全です。特に、dangerouslySetInnerHTML
は使用しないでください。
ただし、専用の攻撃者がアプリのXSSロードブロッキングを回避する方法を見つける方法は他にもあります。それらのいくつかはこれにリストされています DailyJSの記事 :
- Reactユーザー提供のオブジェクトからコンポーネントを作成する;
- ユーザー提供の
href
属性を含むリンクのレンダリング、または挿入可能な属性を含む他のHTMLタグ(link
タグ、HMTL5インポート);- 要素の
dangerouslySetInnerHTML
プロパティを明示的に設定します。- ユーザー提供の文字列を
eval()
に渡します。
Trust but Verifyが最も安全なスタンスです。デフォルトでは、ユーザー入力を信頼してはなりません。 Reactがクライアント側のほとんどのセキュリティを処理しますが、すべてのユーザー入力/関数に対してサーバー側のセキュリティチェックも実装するようにしてください。