Angular 如何处理 XSS 或 CSRF?

How does Angular handle XSS or CSRF?

Angular (2) 如何处理 XSS 和 CSRF。它甚至可以处理这些攻击吗? 如果是这样,我必须做什么才能使用此保护?如果不是,我是否必须在我的服务器中处理所有这些攻击,或者以某种方式在前端使用 TypeScript?

我读到你必须使用“withCredentials: true”,但我不太清楚该把这段代码放在哪里,或者如果是那样的话,我在找什么。

https://angular.io/ 网页中我没有找到任何相关信息(或者我只是错过了)。

Angular2提供内置,默认启用*,反XSSCSRF/XSRF保护.

DomSanitizationService 负责删除危险位以防止 XSS 攻击。

CookieXSRFStrategy class(在 XHRConnection class 内)负责防止 CSRF/XSRF 攻击。

*请注意,CSRF/XSRF 保护在客户端默认启用,但只有在后端设置名为 XSRF-TOKEN 的 cookie 时才有效 用户验证时使用随机值。有关更多信息,请阅读 Cookie-to-Header Token pattern.

更新:Angular2 官方安全文档:https://angular.io/docs/ts/latest/guide/security.html(感谢 Martin Probst 的编辑建议!)。

对于 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'
})

以下是关于如何处理 CSRF 的简要指南 backend/server-side使用SpringBoot时的实现

CSRF 中的令牌可以与 HttpSession 或 cookie 相关联

作为 cookie 处理,我们可以通过

.csrfTokenRepository(new CookieCsrfTokenRepository())

作为一个HttpSession来处理,我们可以通过

.csrfTokenRepository(new HttpSessionCsrfTokenRepository())   

甚至我们可以通过实现 CsrfTokenRepository 来拥有自定义的 csrf 令牌存储库 如果我们需要跳过特定的 url 等等

覆盖 WebSecurityConfigurerAdapter

configure 方法时可以使用以上所有内容