Open1

React開発で最低限押さえておきたいセキュリティ周り

msy.msy.

Reactを使ったフロントエンド開発で押さえておきたいセキュリティの話

  1. データバインディングでデフォルトのXSSプロテクションを使用する
  2. 危険なURLとURLベースのスクリプトインジェクションに気をつけよう
  3. HTMLのサニタイズとレンダリング
  4. DOMへの直接アクセスを避ける
  5. セキュアなReactのサーバーサイドレンダリング
  6. 依存関係にある既知の脆弱性をチェックする
  7. JSONインジェクション攻撃を回避する
  8. 脆弱性のないバージョンのReactを使用する
  9. リンターコンフィギュレーションを使用する
  10. 危険なライブラリコードを避ける

基本的なもの(ほぼ常識レベル)

クロスサイトスクリプティング

Reactでは、デフォルトでなるべき脆弱性を持たないように構築されているため基本的には気にしなくていいものではありますが、場合によってはクロスサイトスクリプティングを発生させかねません。

Reactでは基本的に{}で囲ったものはクロスサイトスクリプティングの攻撃から守ってくれます。
これは、JSXがデフォルトで埋め込まれた値をレンダー前にエスケープしてくれるので、悪質なスクリプトが入っていても全てレンダー前に文字列になってしまいます。

このようにReactを使う際に基本的にはXSS攻撃を心配する必要はありませんが、dangerouslySetInnerHTML を使用した際には注意が必要です。

これはReactのレンダー前のエスケープを無効化するため、XSS攻撃を受ける危険性が高まります。

参考情報

https://ja.reactjs.org/docs/introducing-jsx.html
https://hy.reactjs.org/docs/dom-elements.html
https://snyk.io/jp/blog/10-react-security-best-practices/