題:
隨機網址是保護個人資料照片的安全方法嗎?
owenfi
2014-05-19 01:24:18 UTC
view on stackexchange narkive permalink

我想從連續的用戶ID轉變為隨機的用戶ID,因此我可以公開託管個人資料照片,即 example.com/profilepics/asdf-1234-zxcv-7890.jpg

>

用戶ID必須保持多長時間才能使任何人都找不到未為其鏈接的用戶照片?

16個小寫字母和0到9的小寫字母是否提供合理的複雜性?我將其基於36 16 sup> = 8x10 24 sup>,保守地估計100億用戶帳戶會將空間減少到8x10 14 sup>。以每秒1000次猜測的速度,需要25,000年才能找到一個帳戶。除非我忽略了什麼。

好了,AWS會對用戶文件進行這種處理(如果我沒記錯的話,它是128位隨機名稱),因此您可以假定它“足夠安全”,如實踐中所示。
@owenfi生成128bit +值就可以了。對於您的特定情況和應用,這已經足夠了。
無論如何,這是沒有意義的。密碼,令牌,證書,到底是不是什麼安全性呢?正確使用時的說法並不適用於方法。
此問題等效於“我應該如何選擇安全密碼?”。我一點都沒看到。
這與上週的保管箱漏洞(https://security.stackexchange.com/questions/57436/what-was-the-security-vulnerability-behind-box-and-dropbox-and-whats-different / 57437#57437)-這些是公共網址,可以抓取它們並將其編入索引,用戶可以共享/發布自己的鏈接等。
您誤解了“模糊不清的安全性”一詞。該短語用於描述何時未公開公開用於保護資源的“算法”,從而給人一種錯誤的印象,即它們是安全的,因為沒有人(例如,公司)知道所述算法如何工作。在算法中擁有已知來歷和應用(例如,隨機URL)的秘密密鑰並非一無所知。所有安全性都依賴於共享機密;但是,由於URL洩漏的方式很多,URL可能不是一個好主意。
-1
七 答案:
Mark
2014-05-19 02:33:03 UTC
view on stackexchange narkive permalink

這完全取決於您所指的“安全”。

如果您唯一關心的是攻擊者猜測URL,那麼16個字母數字將提供大約8,000,000,000,000,000,000,000,000,000,000個可能的地址,這足以阻止隨機猜測-為了使攻擊者有50%的機會在一年中有1000名用戶的網站上找到一張圖片,他們需要每秒進行100萬億次嘗試,足夠的流量甚至可以擊倒Amazon或Google之類的東西。

但是,URL洩漏還有其他方法:人們將其放入電子郵件或博客文章中,網絡爬蟲找到您沒有充分保護的頁面,等等。如果您確實需要保護某些內容,則需要將其與網站的其餘部分置於相同的安全保護級別。

個人而言,為製作難以猜測的URL,我會使用GUID UUID。搜索空間非常龐大,您不需要協調多個服務器之間的生成,並且大多數語言都有用於處理它們的標準例程。

大多數GUID生成器不保證輸出結果不可預測。因此,您應該從CSPRNG生成16個隨機字節,而不要使用標準的GUID生成器。
那是一個有問題的GUID / UUID生成器...
@R ..不一定,這取決於您的[GUID](https://zh.wikipedia.org/wiki/Globally_unique_identifier#Sequential_algorithms)或[UUID實現](https://en.wikipedia.org/wiki/Universally_unique_identifier#版本_1_.28MAC_address.29)。但是,我認為這些天*大多數*可能是隨機的,但可能不是*安全*的隨機(因此可能是可預測的)。要記住的是目標是“獨特的”,而不是“不可預測的”,因此好的實現滿足“獨特的”,而且也許也是“不可預測的”。
我認為,要滿足“唯一”標準而不滿足“不可預測”是不可能的,因為在您的控制範圍之外,另一個系統上的另一個“ UUID”生成器最終可能會生成與-可以忽略的概率,如果它知道您的生成算法並選擇嘗試與之發生惡意衝突。如果UUID是不可預測的,則它僅是“ UU”(甚至統計上也是如此)。
-1
@R ..您不正確; GUID被記錄為“唯一性”而非“隨機性”的來源。類型4 GUID是隨機的,但是不能保證隨機性是加密強度,實際上不是。更籠統地說:** GUID並非旨在成為任何安全系統的一部分;在安全系統中使用它們是“標籤外”使用,因此是一個非常糟糕的主意**。
@R ..:GUID系統是故意“不”設計為可以抵抗惡意使用。就像一個停車牌;停車標誌不會“強迫”您停車。如果有人因為惡意並且樂於引起事故而不想理會並通過十字路口,那麼停車標誌不會阻止他們。 GUID是確保唯一性的“合作”系統;假定所有各方都是非敵對的。
最好的解決方案是將_unique_ GUID生成器服務與固定長度的_random_字符串結合使用,然後獲取強哈希函數的輸出,並將其用作對該對象的唯一對象引用。即:`sha256(guid()+ random_chars(32))。hexdigest()`。
@NaftuliTzviKay除了對數據進行混洗外,它沒有任何其他作用,您需要將隨機字符串設置為加密隨機變量,並且即使通過哈希算法也無法使其變得更好。只需在CSRNG傳送加密隨機數時使用它,將GUID混入其中就沒有任何用處。
GUID提供唯一性,而隨機字符串提供隨機性。兩者對於解決OP的問題都是至關重要的。
-1
不保證@BenVoigt: UUID是唯一的!我認為Naftuli Tzvi Kay提出的ID的“唯一性”不會(比)比UUID的唯一性差。某些類型的UUID包含具有MAC地址或域名的MD5或SHA-1。
@basic有很多不同類型的uuid,並且沒有絕對沒有理由讓攻擊者不必了解您的系統就容易受到攻擊-特別是對於類型4 UUID而言……
@Basic如果問題是“使URL不可猜測”,那麼沒有什麼比“系統使URL容易被猜測”更大的問題了(否則為什麼不認為序號也可以呢?)。是的,有些UUID使用MAC地址的某些部分顯然可以幫助您,直到攻擊者可以得到一個GUID(這是有保證的),之後才是他們必須猜測的簡單時間戳。您聲稱要花“不了解您的系統的攻擊者”的年數來查找衝突是完全錯誤的。
@pabouk:保證UUID生成器永遠不會兩次返回相同的值,無論它被調用多少次或由誰調用。您當然可以按位複制UUID並以這種方式創建衝突,或者修改生成器的內部狀態以破壞保證,但是這些與本討論無關。
@BenVoigt:不,真的,不能保證它們是唯一的。原則上,如果您有多個不以唯一標識符開頭的離散UUID生成器,則這是不可能的。例如,MAC地址應該是唯一的,但實際上不是。請參閱:http://stackoverflow.com/q/1155008/320437
@Basic Umn ..您實際上檢查過GUID / UUID的生成方式嗎?該數學假設所有位都是由安全隨機生成器隨機生成的,這是完全錯誤的。那個傢伙基本上是在假設非惡意黑客的情況下計算發生衝突的機會,這是完全不同的。例如,通常使用非安全隨機生成器生成類型4 UUID。看到一些生成的UUID之後,猜測序列非常非常簡單。基於MAC的GUID是使用*時間戳*生成的-您真的不知道猜測可能的值有多麼容易?
@Voo我感覺好像在這裡進行循環討論……讓我們看一下我的第一條評論:“如果攻擊者不了解您的系統,他們可能會生成GUID數年,而不會與您創建的GUID發生衝突”。這裡的關鍵部分是“沒有知識”。正如我在開始時說的那樣,如果他們知道_when_和_what_hat_產生了什麼,那是另一回事了。既然您認為我是錯的,並且我認為您是在不理解的情況下重複教條,我們是否同意不同意並刪除所有對任何人都有價值的評論?
-1
@Voo而且我看不到我們反復重复輸入相同的句子不會以任何方式增加該答案的價值……如果您想討論它,我的電子郵件地址在我的個人資料中。 [xkcd](http://xkcd.com/386/)
iHaveacomputer
2014-05-19 06:02:43 UTC
view on stackexchange narkive permalink

也許不是您問題的答案,但是如果您想“隱藏”個人資料圖片在網站上的位置,則可以將圖片作為數據URI嵌入。您可以在服務器上對圖片進行base64編碼,然後將字符串嵌入您的網站,而不是暴露任何圖像路徑。

請參見 http://css-tricks.com/data-uris/ http:/ /css-tricks.com/examples/DataURIs/獲取說明和演示。

與http URI一樣,@FaridNouriNeshat,數據URI不限於2000個字符。如果您需要支持Internet Explorer 8或更早版本,則[限制為32k](https://en.wikipedia.org/wiki/Data_URI#Web_browser_support);如果您可以要求IE9或更高版本,則沒有限制。
@Mark你是對的。抱歉,我將此與另一種方法混淆了。
這有一個問題:帶寬。緩存在這裡無法工作,因此您最終會更頻繁地發送相同的30KiB映像,這轉化為金錢和性能。
當需要時,這些聖煙很酷!
Voo
2014-05-19 19:56:25 UTC
view on stackexchange narkive permalink

既然您已經打開了保管箱,我想我們可以給出至少一個為什麼這樣做是個壞主意的原因:

Dropbox在納稅申報單在Google上終止後會禁用舊的共享鏈接

據報導,Box上也存在該漏洞,它會影響包含超鏈接的共享文件。該公司昨天在確認該漏洞時指出:“ Dropbox用戶可以共享指向其Dropbox中任何文件或文件夾的鏈接”。

通過鏈接共享的文件只有擁有鏈接的用戶才能訪問。但是,在以下情況下,文檔的共享鏈接可能會無意間洩露給意外的收件人:

  • Dropbox用戶共享指向包含第三方網站超鏈接的文檔的鏈接。 li>
  • 用戶或鏈接的授權收件人單擊文檔中的超鏈接。
  • 此時,引薦來源標頭公開了指向第三方網站的原始共享鏈接。
  • 有權訪問該標頭的人(例如第三方網站的網站管理員)可以訪問共享文檔的鏈接。

基本上,考慮到有多少用戶使用URL,URL容易洩漏。如果您的用戶對此有所了解並避免了這些問題,我想這是相當安全的,但這是一個很大的假設。

謝謝,這是牢記該主題的一個很好的觀點。就我而言,它只能通過應用程序私下使用,因此普通用戶不太可能首先擁有該URL來共享它(缺少對API的反向工程)。
-1
Voo引用的文章包含指向該問題的更合適文章的鏈接:http://www.theregister.co.uk/2011/05/08/file_hosting_sites_under_attack/“在2011年,研究人員發現可以訪問共享的通過猜測URL來訪問文件。”
@WGroleau應該指出,在該鏈接中,所有給定的示例都是以一種或另一種方式損壞的系統。損壞的系統都沒有使用大的搜索空間和安全的隨機生成器。我的意思是真的..順序URL?因此,我發現它不如給定的鏈接適用,後者顯示了系統的固有缺陷(僅用於某些用途),而不僅僅是實現失敗的問題。儘管它表明人們將嘗試利用這樣的系統,但最好確保它是合理的!
R.. GitHub STOP HELPING ICE
2014-05-19 17:43:52 UTC
view on stackexchange narkive permalink

其他答案通常是好的,但另一個考慮因素是運輸。如果您使用純http或任何其他非加密協議(或通過電子郵件發送url),則從安全角度考慮,您傳輸和接收的所有數據(包括這些url)都應視為完全公開的。很大一部分用戶(是否有統計信息?)都位於未加密的公共wifi接入點上,這種網絡的活動url /圖像抓取很常見。

啊哈,我忽略了這一點!謝謝!幸運的是,就我的服務而言,SSL是強制性的。
Phil Perry
2014-05-19 22:27:27 UTC
view on stackexchange narkive permalink

正如其他人所提到的,特定圖像的URI遲早會洩漏出去,無論它持續了多長時間或令人費解。如果您希望將訪問權限限制為登錄用戶,則可以使用例如 ... / image / profile.php?u = 12345 來顯示用戶12345的圖像而無需 direct 可以將照片的URI傳遞給公眾。假定隨機的人(未登錄)不會從profile.php得到任何回報。請注意,沒有什麼可以阻止登錄的用戶保存該圖像(特別是如果它已緩存)並傳遞該圖像。可以使用緩存控制標頭等來完成某些操作,或者將圖像放入Flash等中,但是如果可以在某人的瀏覽器上查看圖像,則只要有足夠的工作,就可以抓取並保存它。 >

例如,您無法採取任何措施阻止用戶進行屏幕截圖! :)
-1
pyramids
2014-05-20 20:11:47 UTC
view on stackexchange narkive permalink

您的方案存在的問題是您的URL的眾多用戶可能不會全部都猜測它們包含敏感信息。問題的一部分是,您可能不知道用戶數量有多大。對於這些URL,用戶包括

  1. 您認為是用戶的人。

  2. 他們的瀏覽器插件/插件/擴展。

  3. 關於您網站上的任何第三方內容(廣告,分析,社交插件...),很可能會以一種或另一種方式告知第三方出現問題的URL。

  4. 看似隨機的網站將URL視為引薦來源URL(您真的知道用戶通過瀏覽器插件將哪些奇怪的額外鏈接構想成您的網站嗎?)。 / p>

  5. ol>

    經驗證據是Google反复索引了廣告為等同於密碼的僅HTTPS網址的索引,例如對於無密碼的比特幣在線錢包 Instawallet(請注意,他們已經破產了,以至於他們甚至再也無法提供有效的SSL證書了。)

謝謝,這裡指出了一些非常好的案例。看起來像在網站上推廣之前,我需要將其放在auth之後。 (目前,它僅在app-api中,因此第3方將在某種程度上受限於網絡模塊,也許第3方工具會觀察我的文檔目錄。)
人們甚至可能將整個URL輸入到Google搜索欄中,從而將URL公開給Google。
hax
2016-10-16 19:13:19 UTC
view on stackexchange narkive permalink

在上面回答的每個人中都添加了幾個重要要點,似乎錯過了其中一些要點。

  1. 無意中公開URL的可能性比公開口令的可能性要高,因為人們意識到密碼很敏感。
  2. 類似於Facebook的網站使用的CDN URL如此復雜,以至於沒人能猜到,但是從安全角度來看,它們似乎是有風險的,因為當用戶更改密碼時,無法撤銷訪問權限隱私設置。某些網站,包括後端具有亞馬遜網絡服務s3存儲的網站,都使用帶有時間戳的簽名URL,該URL會定期進行驗證。
  3. Google緩存!搜索引擎可能會爬過所謂的私人圖片。用怪癖進行搜索,只會帶回來自Facebook CDN的結果,您會感到驚訝。
  4. ol>
我特別喜歡第2點。此文件已在現已停用的“朋友”系統中用於個人資料圖像。訪問刪除透視圖是一個不錯的考慮因素(我想這與保存圖像的人沒有多大區別)。
@owenfi我同意這一點。與保存圖像沒有太大區別,但是存在從瀏覽器歷史記錄,緩存等中獲取詳細信息的可能性。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...