我正在尝试使用Spring Security(4.1.3)和Angular 2.0.1实现CSRF保护
相关话题的来源很多,但我找不到明确的说明。有些说法甚至相互矛盾。
我读过关于springs的操作方法(尽管指南中描述了Angular 1 way)Spring Security guide,其中包含Angular,即。csrf()。csrfTokenRepository(CookieSrftokenRepository.withHttpOnlyFalse())
一切都应该“开箱即用”。此外,《角度安全指南》将CSRF保护描述为内置。
在我的环境中,帖子如下所示:
有一个OPTIONS-call返回POST、200 OK和一个XSRF-TOKEN-cookie。
- 我的http.post添加了一个授权标头,并添加了Request estOption"有凭据"
- 它发送三个cookie,两个JSessionID和一个与OPTIONS-call接收到的不同的XSRF-TOKEN,没有XSRF标头。
- 调试Spring CsrfFilter显示它查找名为X-XSRF-TOKEN的标头,并将其与名为XSRF-TOKEN的cookie中的令牌进行比较。
为什么Angular不也发送标题?如果Spring只检查提供的cookie和提供的标头,而没有任何服务器端操作,那么这种安全性如何?
有一些类似的问题,但只有0票的答案似乎(对我来说)完全错误,因为根据我的理解,CSRF必须有一个cookie验证的服务器端检查。
此问题仅提供有关如何更改cookie或标头名称的信息,如此处所述
我在这里错过了什么?我怀疑Spring Security实现中存在错误,但我无法让它正常工作。
有什么想法吗?
通话后
login(account: Account): Promise<Account> {
let headers = new Headers({ 'Content-Type': 'application/json' });
headers.append('X-TENANT-ID', '1');
headers.append('Authorization', 'Basic ' + btoa(account.userName + ':' + account.password));
let options = new RequestOptions({ headers: headers, withCredentials:true });
return this.http.post(this.loginUrl, account, options).toPromise()
.then(this.extractData)
.catch(this.handleError)
}
Spring Security配置
[] csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
问题是应用程序路径。Spring可以选择在其管道中设置cookie路径,但尚未发布。
我必须为CsrfTokenRepository编写自己的实现,它将接受不同的cookie路径。
这些是相关位:
public final class CookieCsrfTokenRepository implements CsrfTokenRepository
private String cookiePath;
@Override
public void saveToken(CsrfToken token, HttpServletRequest request, HttpServletResponse response) {
String tokenValue = token == null ? "" : token.getToken();
Cookie cookie = new Cookie(this.cookieName, tokenValue);
cookie.setSecure(request.isSecure());
// cookie.setPath(getCookiePath(request));
if (this.cookiePath != null && !this.cookiePath.isEmpty()) {
cookie.setPath(this.cookiePath);
} else {
cookie.setPath(getRequestContext(request));
}
if (token == null) {
cookie.setMaxAge(0);
} else {
cookie.setMaxAge(-1);
}
if (cookieHttpOnly && setHttpOnlyMethod != null) {
ReflectionUtils.invokeMethod(setHttpOnlyMethod, cookie, Boolean.TRUE);
}
response.addCookie(cookie);
}
public void setCookiePath(String path) {
this.cookiePath = path;
}
public String getCookiePath() {
return this.cookiePath;
}
> 到目前为止,我使用角2快速入门创建了一个新项目。 我决定开始使用angular 2 cli,并创建了一个新的angular 2 cli项目。 移动了我的所有文件并重新安装了所有软件包。 现在,当我试图在CLI项目中使用角2材料时,我遵循了这里的指南,但这是我得到的: 会出什么问题?
后端的这两个模型在前端有它们的对应。我添加_links部分是因为Spring Rest api提供链接而不是外键: 我根据从API获得的信息创建了这些模型。例如,localhost:8080/api/b/1上的get请求给出: 我可以使用下面所示的angular 2服务方法轻松地在表A中插入新行(因为它不包含外键): 在Spring中,当我试图将新行插入到表B中时,会出现以下错误: 我想知道htt
我有一个单页角应用与Spring引导。它看起来如下所示: Spring Boot正确地默认为webapp文件夹,并为index.html文件服务。 我想做的是:
我实际上正在学习Angular2,但我遇到了一个...CSS问题o_O我曾搜索过一个类似的问题,但没有任何成功,现在开始: 我在中有一个标记元素 我在div中设置了并使用来适应,但似乎根本不起作用,图片不适合div。 我很困惑因为这是第一次发生在我身上 请参阅:我使用styleUrls在组件中注入css规则 代码 谢谢!
编辑问题包括期望的行为, 我正在编写一个Angular 2应用程序,我不明白为什么Angular不能正确使用
问题内容: 您好,我正在尝试在我的应用程序中实现加密。我在前端使用angular(angular-4),在后端使用node js。通过socket.io通过自定义命令进行通信。但基本上,我坚持要在客户端中找到用于RSA加密的适当库。客户端将首先向服务器请求RSA公钥。服务器用密钥响应,但是现在我找不到任何适合使用此公共密钥通过RSA加密数据的库。我已经尝试过node- rsa。以下是代码sn 但我