Angular如何处理XSS或CSRF攻击?

28
Angular(2)如何处理XSS和CSRF?它是否能够处理这些攻击?如果可以,我需要做什么来使用此保护?如果不行,我需要在服务器端或前端的TypeScript中处理所有这些攻击吗?我已经阅读了“withCredentials:true”,但是我不确定要将此代码放在哪里,或者这是否是我正在寻找的内容。在https://angular.io/网页中,我没有找到任何关于此问题的信息(或者我可能错过了)。
3个回答

41
Angular2提供内置的防止XSSCSRF/XSRF攻击的保护措施,默认启用。 DomSanitizationService负责去除危险部分,以防止XSS攻击。 CookieXSRFStrategy类(在XHRConnection类中)负责防止CSRF/XSRF攻击。
注意:默认情况下,客户端启用了CSRF/XSRF保护措施,但仅在后端设置一个名为XSRF-TOKEN的cookie并在用户验证时设置一个随机值时才有效。如需了解更多信息,请阅读关于Cookie-to-Header Token模式的内容。
更新:官方Angular2安全文档:https://angular.io/docs/ts/latest/guide/security.html (感谢Martin Probst提供的编辑建议!)

值得全面查看安全指南,但也要特别参考 https://angular.io/guide/http#security-xsrf-protection(安全指南中链接到的内容)。 - jmq

3
在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'
})

1
完美的解释 - x-magix

0
以下是有关在使用SpringBoot时后端/服务器端实现中如何处理CSRF的简要指南。 CSRF中的令牌可以与HttpSession或cookie相关联。
要将其处理为cookie,我们可以传递。
.csrfTokenRepository(new CookieCsrfTokenRepository())

为了处理一个 HttpSession,我们可以传递
.csrfTokenRepository(new HttpSessionCsrfTokenRepository())   

即使我们需要跳过特定的URL等,也可以通过实现CsrfTokenRepository来创建自定义CSRF令牌存储库

所有上述内容都可以在重写WebSecurityConfigurerAdapter的configure方法时使用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接