2016-08-12 31 views
0

我正在開發一些內部使用,風險是,因爲我們的工作人員使用相同的IP,因此他們可以發送一個休息請求並將某些東西插入到數據庫中。即使我縮小了我的腳本,他們也可以轉到網絡選項卡並查看請求。防止來自同一IP的cors

如何在這種情況下應用cors?

+0

聽起來像你需要添加更好的安全性與登錄系統/密碼/祕密。 – epascarello

+0

如果您不能根據IP將不好的用戶分離出來,Cors不會幫助您。實際上,即使你可以,然後Cors仍然不會幫助你,因爲人們可能會捲曲你。您實際需要的是正確的身份驗證和權限。 **永遠不要**允許未經授權的訪問您的數據庫。 – freakish

+0

@freakish我不是在討論關於authroization到db的話題,如果他們知道我的休息結束點,那麼在同一個網絡上的人可以使用郵遞員做些事情,不是嗎? –

回答

2

你不行。

同源策略可以阻止您不信任的人訪問您信任的人使用訪問者的瀏覽器向您的服務器發送請求並從中竊取數據的網站。

當有第三方網站信任與數據時,CORS是有選擇性地禁用同源策略。

它們都不能解決您有信任更改數據庫的用戶但只能通過您提供的客戶端UI的問題。

要解決這個問題,您需要更好的服務器端授權邏輯。

舉一個簡單的例子,如果您有一個REST API,它允許用戶通過發送ID來刪除評論,那麼您還需要在請求中包含用戶名和密碼(或其他形式的身份驗證)讓你知道誰是正在提出請求。一旦知道誰在提出請求,您必須檢查他們是否有權刪除該評論。通常情況下,這將是邏輯像:

if (comment.owner == user || user.has_role("admin")) { 
    comment.delete(); 
} else { 
    response.status.unauthorised(); 
    response.send(); 
} 
+0

想象它就像一個每個人都可以預訂房間的應用程序,你將如何設置角色?通過阿賈克斯我也可以改變你的角色。 –

+0

該角色將附加到數據庫中的用戶。用戶的角色只能由(例如)管理員用戶編輯...因此,在允許之前測試請求更改角色的用戶是否爲管理員。 – Quentin

+0

我認爲這裏有誤解,我關心的是如何防止用戶使用郵遞員或其他任何方式發送ajax請求,因爲他們使用Intranet aka網絡,而我們的服務器是內部的。 –