Angular 如何处理 XSS 或 CSRF?
How does Angular handle XSS or CSRF?
Angular (2) 如何处理 XSS 和 CSRF。它甚至可以处理这些攻击吗?
如果是这样,我必须做什么才能使用此保护?如果不是,我是否必须在我的服务器中处理所有这些攻击,或者以某种方式在前端使用 TypeScript?
我读到你必须使用“withCredentials: true
”,但我不太清楚该把这段代码放在哪里,或者如果是那样的话,我在找什么。
在 https://angular.io/ 网页中我没有找到任何相关信息(或者我只是错过了)。
Angular2提供内置,默认启用*,反XSS和CSRF/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 方法时可以使用以上所有内容
Angular (2) 如何处理 XSS 和 CSRF。它甚至可以处理这些攻击吗? 如果是这样,我必须做什么才能使用此保护?如果不是,我是否必须在我的服务器中处理所有这些攻击,或者以某种方式在前端使用 TypeScript?
我读到你必须使用“withCredentials: true
”,但我不太清楚该把这段代码放在哪里,或者如果是那样的话,我在找什么。
在 https://angular.io/ 网页中我没有找到任何相关信息(或者我只是错过了)。
Angular2提供内置,默认启用*,反XSS和CSRF/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 方法时可以使用以上所有内容