Angular(2)如何处理XSS和CSRF。它甚至可以处理这些攻击吗?如果是这样,我该怎么做才能使用这种保护?如果没有,我是否必须在我的服务器中处理所有这些攻击,或者在前端以某种方式使用TypeScript?
我已经读过你必须使用“withCredentials: true
”,但我不太确定在哪里放这个代码,或者甚至是那个,我正在寻找什么。
在https://angular.io/网页上我没有找到任何关于此的信息(或者我只是错过了它)。
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的编辑建议!)。
对于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'
})