やっほー
Angularのセキュリティ!XSSやCSLFの対策は?

Angularのセキュリティ!XSSやCSRFの対策は?

  • 2018年12月21日
  • 2021年3月20日
  • Angular
  • 217view

最近、僕は良くAngularを触るのですが、今参画している案件ではセキュリティ診断なるものがあるらしいです。

となると、Angularに関してもセキュリティの知識は身に付けておくべきでしょう。

ということで今回は、Angularにおけるセキュリティについてまとめてみました。

Angularのセキュリティ

Angularはサーバサイドではなくフロントサイドなので、セキュリティを過剰に意識しすぎる必要はありません

ただ、最近はセキュリティにうるさい世の中なので、エンジニアである以上意識してコーディングはするべきです。

Angularがデフォルトで対策しているものは以下の通りです。

  • XSS(クロスサイトスクリプティング)
  • CSRF(クロスサイトリクエストフォージェリ)
  • XSSI(クロスサイトスクリプトインクルージョン)

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

フロントサイドにおいて、XSSは一番考慮しなくてはならない問題です。

XSS対策において大切なことは、悪意のあるDOMを挿入されないようにすることです。

関連記事

クロスサイト・スクリプティング。 セキュリティの知識がある方なら一度は聞いたことがあるかもしれません。 ただ、こういったセキュリティ用語は体験できる機会が少ないので、なかなか知識として定着しにくいものです。 ということで今[…]

クロスサイト・スクリプティングをクソわかりやすく解説!

AngularにおけるXSS対策

Angularは、すべての入力を信頼できない値として処理します

つまり、DOMへの値挿入はすべて信頼できない値として処理し、サニタイズされます。

サニタイズは「無害化」という意味です。
<script>タグなど、特殊な文字列を無害化します。

サニタイズ例

上記は公式サイトに載っているソースコードです。

テンプレート補完({{}})は自動的に「htmlSnippet」の値をエスケープします。

innerHTMLでは、<script>タグはサニタイズされますが、<b>タグなどはサニタイズされません。

CSRF(クロスサイトリクエストフォージェリ)

Angularは、デフォルトでCSRFの対策がなされています

HttpClientXsrfModuleのソースコード

コメントには以下のような記載があります。参考までに。

Cookie name default is XSRF-TOKEN.
Header name default is X-XSRF-TOKEN

XSSI(クロスサイトスクリプトインクルージョン)

Angularは、デフォルトでXSSIの対策がなされています

Angularのセキュリティ対策で大切なこと

Angularでのセキュリティ対策として大切なことは以下の通りです。

  • 最新状態に保つこと
  • Angularテンプレートを利用すること

最新状態に保つこと

何でもそうですが、常に最新状態を保つことは大切です。

特に、Angularの場合はバージョンが約半年ほどで更新されるので、最新のバージョンにすることも大切になります。

バージョンアップには脆弱性対策に関するパッチも含まれるため、更新は怠らないようにしましょう。

Angularテンプレートを利用すること

サードパーティ製のものを利用するなど、脆弱性のあるものを利用するのは極力避けましょう。

Angularでできることは多種多様なので、わざわざ脆弱性のあるものを入れる必要はありません。

Angularのセキュリティ公式サイト

Angularのセキュリティ公式サイトはこちらです。

Googleのセキュリティ

AngularはGoogleが開発していることもあり、Googleにおけるセキュリティも確認しておくべきです。

Googleにおけるセキュリティはこちらを参照してください。

おすすめ本

Angularの勉強をするならこの2冊がおすすめです!

まとめ

Angularでコーディングをする際に気を付けるべきポイントは特にありません。

といってもAngularだけで完結するシステムは存在しないため、サーバ側ではセキュリティの考慮は必須です。

また、コーディングが悪ければそれだけセキュリティリスクも増していきます。

常に最新の情報を入手し、セキュリティを考慮したコーディングを心がけましょう。

Angularのセキュリティ!XSSやCSLFの対策は?
フォローしてもらえると泣いて喜びます