我正在開發使用春季啓動1.5.7作爲後端和網站角2爲前端。 我是這兩種技術的新手,這是我第一次嘗試開發一個網站。所以我對很多事情感到困惑。Securirty:Java的春季啓動+角2 +智威湯遜
我已通過JWT實施了用戶驗證。 當通過證書用戶登錄,後臺對其進行驗證,然後創建一個JWT,並返回給前端:令牌被添加到標題是這樣的:
Authorization - Bearer <jwt token>
在前端我如果該項檢查在帖子回覆中。如果它在那裏,我將它和用戶名一起添加到localStorage。
private authUrl = 'http://localhost:8080/login';
private headers = new Headers({
'Content-Type': 'application/json',
'Accept': 'application/json'
});
constructor(private http: Http) { }
login(username: string, password: string): Observable<void> {
let loginRequest = JSON.stringify({ username: username, password: password });
return this.http.post(this.authUrl, loginRequest, { headers: this.headers })
.map((response: Response) => {
let token = response.headers.get('Authorization');
// If token is not null, empty or undefined.
if (token) {
localStorage.setItem('jwt', JSON.stringify({ username: username, token: token }));
}
});
}
當用戶登錄時,他每次訪問受保護的資源,令牌將從localStorage的檢索和發送回後端進行驗證。 整件事情奏效。智威湯遜是免疫的CSRF,這樣我就可以禁用,在後端,
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
...
,但我已閱讀(例如,here)有使用本地存儲時的漏洞。
特別是localStorage可以通過JavaScript訪問同一個域,暴露於XSS攻擊。 解決它似乎我可以使用JWT Cookie。正如之前的鏈接所寫,我可以設置HttpOnly cookie標誌以避免通過JavaScript訪問Cookie。
但是,使用Cookie我現在很容易受到CRSF攻擊。
現在,here,我已閱讀Angular 2+提供內置,默認情況下啓用,反XSS。
所以問題是。我應該使用localStorage,並使用嵌入式Angular 2反XSS功能,或者這還不夠,然後我應該將Cookie存儲在JWT上以獲得針對XSS攻擊的保護,然後使用Spring在其上實現某種CRSF保護後端啓動配置?
謝謝
編輯:網站是一種購物車。用戶可以查看幾乎所有 頁面,但要他需要登錄。
謝謝你的回答。我編輯了這個問題;我的網站將是一個有點購物車。在這種情況下,更好地遵循#2接近? – Shaunyl