Angular如何处理XSS或CSRF?

时间:2016-04-13 09:43:13

标签: angular typescript xss csrf

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

我已经读过你必须使用" withCredentials: true",但是我不太确定在哪里放这个代码,或者甚至是那个,我是什么&#39 ;我正在寻找。

https://angular.io/网页上,我没有找到任何相关内容(或者我只是错过了它)。

3 个答案:

答案 0 :(得分:36)

Angular2 提供内置功能,默认启用*,反 XSS CSRF / XSRF 保护。

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

CookieXSRFStrategy类(在XHRConnection类中)负责防止 CSRF / XSRF 攻击。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

以下内容是有关如何处理 CSRF 的简要指南 使用SpringBoot时的后端/服务器端实现

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

要作为 cookie 处理,我们可能会通过

.csrfTokenRepository(new CookieCsrfTokenRepository())

要作为 HttpSession 处理,我们可以通过

.csrfTokenRepository(new HttpSessionCsrfTokenRepository())   

通过实现CsrfTokenRepository,我们甚至可以拥有一个自定义的CSRF令牌存储库 万一我们需要跳过特定的网址等等

覆盖 WebSecurityConfigurerAdapter

configure 方法时,可以使用上述所有