2012-08-14 78 views
5

我正在製作一個書籤,以便用戶可以使用來自任何頁面的CORS跨域發佈到我的服務器。用戶必須在發佈和使用cookie之前進行身份驗證。有什麼辦法可以防止惡意網站在他們的網頁中嵌入javascript代碼,以使用用戶的憑證進行跨域發佈到我的服務器?在使用CORS時防止CSRF?

+0

不,也許你可以考慮發佈到你的網站控制下的iframe,然後讓用戶在發佈之前確認()。或者你可以在每個用戶的小書籤中嵌入一個獨特的CSRF標記,然後......等等,我正在想一個主意...... – user2428118 2012-10-02 10:54:16

回答

1

理論上,可能有解決方案。

  1. 在每個用戶的小書籤中嵌入一個唯一的CSRF標記。
  2. 將書籤中的代碼封裝在匿名函數中,以便頁面無法訪問它。
  3. 在您的書籤中嵌入a strong hash function。這必須完全放在書籤的代碼中,以確保它不會被篡改。
  4. 在你的XMLHttpRequest,你送:
    1. 消息
    2. 的哈希:
      1. 消息
      2. 你CSRF令牌
      3. 一個獨特的,長鹽
      4. 用戶標識
      5. 時間戳(只是爲了確保郵件已發送,而不是在其他時間發送)
    3. 時間戳
    4. 用戶ID
  5. 在自己的服務器,驗證:
    1. 時戳在允許誤差(這是必要的範圍內,因爲用戶的計算機時鐘可能關)
    2. 散列正確
  6. 如果一切正確,您可以發佈消息。

有一個缺陷這一概念:如果一個網站與任何由書籤(如Array())使用的功能篡改,惡意網站可能仍然能夠截取,複製和/或修改消息,用戶ID或CSRF令牌。