Angular(2)如何处理XSS和CSRF。它甚至可以处理这些攻击吗? 如果是这样,我该怎么做才能使用这种保护?如果没有,我是否必须在我的服务器中处理所有这些攻击,或者在前端使用TypeScript进行处理?
我已经读过你必须使用" withCredentials: true
",但是我不太确定在哪里放这个代码,或者甚至是那个,我是什么&#39 ;我正在寻找。
在https://angular.io/网页上,我没有找到任何相关内容(或者我只是错过了它)。
答案 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 方法时,可以使用上述所有