2011-04-15 29 views
3

我可以在哪裏學習(或者說是什麼)cookie的範圍,以避免經過身份驗證的用戶的CSRF和XSS攻擊?爲了安全起見,我應該瞭解哪些Cookie域和範圍?

舉例來說,如果我有一個多租戶系統,其中一個用戶可以訪問一個或多個網站什麼是更安全:

  • company1.hoster.com
  • company2.hoster。 COM
  • company3.hoster.com

  • www.hoster.com/company1
  • www.hoster.com/company2
  • www.hoster.com/company3

會發生什麼,如果我設置爲 「hoster.com」 餅乾嗎?

+0

我認爲你的意思是XSS(跨站點腳本)。CSRF是一個請求僞造,並且無關緊要(除非受到攻擊的域名的檢查)請求來自哪裏(並且您可以欺騙源頭)。 XSS有一個相同的來源策略,這是一個JavaScript限制,請閱讀 – 2011-04-15 15:37:39

+0

謝謝。我會研究同一來源如何適用於上述情況... – TLDR 2011-04-15 16:05:54

回答

0

Open Web application security project發佈了大量有關安全Web應用程序開發的寶貴信息。

Cookie的有一個範圍和路徑屬性,你通常不希望爲「/」或通配符主機發出cookie * .hoster.com都不明智。

它不像這一個決定那麼簡單,它在你的設計中很好地考慮了安全性,但是在你的開發的每個階段,安全都是一個過程。

3

您可以分別限制domainpath中cookie的有效範圍。

  1. 設置cookie只//company1.example.com/:所以,你可以在這兩種情況下是隻適用於特定域/路徑組合設置cookie

    Set-Cookie: name=value; Path=/ 
    

    省略屬性使得該cookie只對其設置的域有效。對於Path=/,cookie對於任何具有前綴/的路徑均有效。

  2. 設置cookie僅//example.com/company1/

    Set-Cookie: name=value; Path=/company1/ 
    

    相同的解釋對於上面的例子。唯一的限制是您需要使用/company1/而不是/company1,因爲Path=/company1將等於Path=/,因此會使cookie也對/company2/company3有效。

爲避免cookie可以通過JavaScript讀取(減少使用XSS訪問的資產),請設置HttpOnly attribute