2013-05-15 53 views
3

我一直在想這個和關閉,並做了一個快速測試與Facebook。假設你有一個類似Facebook的網站並將其分解爲圖像和配置文件。您選擇與朋友分享或不分享的圖像。很顯然,在數據庫中,如果元數據是共享的,它與誰共享等元數據上應用了值。資源,如圖像,並確保他們

現在說我查看特定的形象,所以我現在已經爲資源(在這個例子中的圖像)的HTTPS URL。此時,可以在不登錄的情況下查看資源,也可以查看任何類型的令牌。您擁有該網址,將其加載到任何瀏覽器中,然後您就可以看到該資源。當然,它是在SSL層提供的,它們有相當長的,複雜的名稱,但我可以在不進行身份驗證的情況下查看它。

我不禁想,這是可以做的最好?這種類型的內容可以安全嗎?如果你有一個直接的URL,你不能加載它?那些可能更敏感的文件呢?如果有人有路徑,他們現在可以永遠訪問該資源嗎?在這種情況下,OAuth可以提供任何幫助嗎?

我想我只是想大聲對這些資源如何被保護,所以,如果我直接打了一個網址,我不會總是得到這個資源不被認證。我可能錯過了另一個流程或方法嗎?如果是這樣,性能和安全性之間的平衡和權衡是什麼?希望研究可擴展的選項。

+0

投下這個問題是愚蠢的。 – Michael

+0

另一個投票呢?真。也許人們應該實際評論或添加到這篇文章。有趣的我認爲堆棧溢出是爲了分享想法... – Michael

+0

同意。如果您對此投票,請留下評論爲什麼。海事組織這個問題沒有錯。安全性對於軟件開發非常重要,完全依賴於主題。 –

回答

2

在資源訪問的實現你的描述,這將被認爲是一個漏洞。幾乎每個Web應用程序都有控制權,以確保所請求的資源只能交付給經過認證和授權的用戶。唯一不會出現這種情況的是一個簡單的服務器,它不會進行會話跟蹤。很遺憾Facebook或任何知名網站在2013年都很容易受到這種攻擊。這是我在90年代和21世紀初看到的一個漏洞。

大多數Web應用程序以某種形式維持用戶的會話狀態。當請求資源(例如通過URL的圖像)時,會檢查會話標記(或其他方法)以確保用戶已通過身份驗證,並且該用戶有權在返回之前請求該資源(訪問控制) 。如果用戶沒有檢查,請求被拒絕。

+0

如果你有臉書資源的網址,你可以查看它,不管你有什麼權限,即使你沒有通過身份驗證。要自己測試它,只需上傳圖片並將其設置爲可見。使用chrome打開開發人員工具,然後轉到網絡選項卡。然後您可以查看請求的資源的URL。註銷Facebook,清除緩存或打開您從未使用Facebook進行身份驗證的瀏覽器。您將能夠查看該圖像。所以上述問題和意見仍然存在。你有沒有辦法保護你已經知道URL的資源?在這種情況下,圖片 – Michael

+0

@邁克爾我相信你關於Facebook是脆弱的,但我所說的仍然是。這是一個不常見的漏洞。 Facebook讓我感到不安,但我可以向你保證這並不常見。您必須瞭解服務器/ Web應用程序的工作方式。僅僅因爲資源被請求並不意味着它被返回。 HTTP請求通過並傳遞給Web應用程序。 Web應用程序可以隨意響應,沒有任何東西強制它返回請求的資源。在ASP.NET中,我根據經過身份驗證的用戶的HashMap檢查請求者的會話ID。 –

+0

驗證完成後,我再檢查資源的ACL以查看用戶是否被授權。如果兩者都檢查,那麼我按要求返回資源。如果有什麼不對,我會返回一個HTTP 403 Forbidden。 –