web-dev-qa-db-ja.com

AngularはXSSまたはCSRFをどのように処理しますか?

Angular(2)XSSとCSRFを処理します。これらの攻撃も処理しますか?その場合、この保護を使用するには何をしなければなりませんか?そうでない場合、すべてを処理する必要がありますか?私のサーバーでこれらの攻撃、またはフロントエンドでTypeScriptを使用して何らかの形で?

withCredentials: true "、しかし、私はこのコードをどこに置くべきか、それがそれでさえあれば、私が探しているものがよくわかりません。

https://angular.io/ のWebページでは、これについて何も見つかりませんでした(または見逃しました)。

22
TheHeroOfTime

Angular2はビルトインを提供し、デフォルトで有効*、anti[〜#〜] xss [〜#〜] およびCSRF/XSRF保護。

DomSanitizationService は、[〜#〜] xss [〜#〜]を防ぐために危険なビットを削除します。攻撃。

CookieXSRFStrategy クラス(XHRConnectionクラス内)は、CSRF/XSRF攻撃を防止します。

*CSRF/XSRF保護はクライアントでデフォルトで有効になっていますが、バックエンドがXSRF-TOKENは、ユーザーが認証するときにランダムな値を使用します。詳細については、 Cookie-to-Header Token pattern をご覧ください。

更新:公式のAngular2セキュリティドキュメント: https://angular.io/docs/ts/latest/guide/security.html (編集の提案をしてくれたMartin Probstに感謝!)。

38
Daniel Gartmann

Angularで言及されているサーバー側の場合、Expressを使用して処理できるCSRFは次のとおりです。

app.use(express.csrf())
app.use(function (req, res, next) {
  res.cookie('XSRF-TOKEN', req.session._csrf);
  res.locals.csrftoken = req.session._csrf;
  next();
})

ただし、新しいHttpClientXsrfModuleがまだ必要かどうかはわかりません。クライアント側でapp.moduleに以下を追加するだけで十分な場合があります(ただし、確認する必要があります)。

HttpClientXsrfModule.withOptions({
  cookieName: 'XSRF-TOKEN',
  headerName: 'X-XSRF-TOKEN'
})
0