2017-08-09 82 views
1

我們目前正在與Slim-PHP REST Backend合作開發Angular4應用程序。現在我們要實施XSRF保護。在angular2或angular4上沒有官方教程,如何在客戶端使用類XSRFStrategy,CookieXSRFStrategy等是否正確? (我們在服務器端放置了一個XSRF TOKEN cookie,並且不會那個角度發送一個XSRF TOKEN頭部參數)angular4 angular2 - XSRF保護

我們在論壇中發現了很多線索,但是都帶有個別情況...在頁面上「https://angular.io/guide/security 「也沒有關於如何使用它的詳細信息。或者我錯過了什麼?有沒有人有小費?

謝謝!

回答

2

您提供有一個鏈接到類HttpClient,在這裏你可以找到以下文字的網址:

跨站請求僞造(XSRF)是一種攻擊技術,通過該 攻擊者可以欺騙經過身份驗證的用戶無意中在您的網站上執行了 操作。 HttpClient支持使用通用機制 來防止XSRF攻擊。在執行HTTP請求時,攔截器 從cookie中讀取令牌,默認情況下爲XSRF-TOKEN,並將其設置爲 HTTP標頭X-XSRF-TOKEN。由於只有在您的域 上運行的代碼才能讀取cookie,因此後端可以確定HTTP 請求來自您的客戶端應用程序,而不是攻擊者。

這是可配置的:

如果你的後端服務使用不同的名稱爲XSRF令牌的cookie 或標題,可以使用HttpClientXsrfModule.withConfig()覆蓋 默認值。

imports: [ HttpClientModule, 
    HttpClientXsrfModule.withConfig({ 
    cookieName: 'My-Xsrf-Cookie', 
    headerName: 'My-Xsrf-Header' 
    }) ] 
+0

感謝巴勃羅,我來試試 – ORE

+0

請,如果這個答案幫助了你,選擇它作爲以紀念這個問題接受作爲回答;) –

+0

我會做到這一點,當然。我仍然遇到了通過PHP設置cookie的問題。顯然,Angular只接受XSRF-TOKEN-Cookies,它們具有過期和域值。 我的第一次嘗試: 'setcookie('XSRF-TOKEN',$ value);' Angular忽略了Cookie並且沒有在標頭中設置任何參數。 然後我指定了過期時間和域。 'setcookie('XSRF-TOKEN',$ value,time()+(86400 * 1),「/」);' Angular已經讀取cookie並正確設置X-XSRF-TOKEN標頭參數。 也許這有助於某人。 – ORE

3

這應該是withOptionswithConfig。即:像這樣

HttpClientXsrfModule.withOptions({ 
    cookieName: 'My-Xsrf-Cookie', 
    headerName: 'My-Xsrf-Header' 
}), 
+0

所以..是官方文檔不正確? –