2010-10-09 49 views
1

我的工作產生的鍛鍊計劃打印小web應用。用戶(即私人教練)可以創建練習程序,然後輸入其客戶的電子郵件地址。運動程序的鏈接然後發送到客戶端,就像這樣...安全查詢字符串中使用長哈希來識別動態文檔

http://www.myurl.com/generate.php?hash=abiglonghash... 

散列是一個sha512字符串。

我不希望人們能夠很容易地發現其他人的鍛鍊計劃。同時,當他們點擊該鏈接時,我更願意避免提示其他人輸入密碼信息等。我希望客戶點擊他們電子郵件中的鏈接,並立即獲得他們的節目,不要大驚小怪。

我不知道是什麼想法,因爲上述的安全性,而無需額外的認證?我知道這不是Fort Knox,但對於我來說,這似乎與典型的「忘記密碼」系統一樣安全。任何想法,建議如何能夠改進,而不需要進入全面的用戶身份驗證?

由於提前,

+1

安全評估常常被忽視的一個方面是評估(並儘量減少)妥協的影響。鍛鍊計劃是否包括其規定人員的姓名,電子郵件地址,會員編號,社會安全號碼,銀行賬戶信息?如果您刪除任何敏感信息,妥協的後果將大大減少。 – grossvogel 2010-10-09 16:54:53

回答

1

「忘記密碼」系統通常做了幾件事情:

  • 需要你「知道」的東西一旦你的頁面(如您母親的孃家姓,你高中等)
  • 向您發送一封電子郵件,您的新密碼。即使您訪問其他用戶的「忘記密碼」網址,新密碼也會發送到該用戶的電子郵件地址。這意味着您需要訪問他們的收件箱以及他們的「祕密問題」

爲了您的目的,SHA512字符串應該足夠安全。理論上使用SHA512類似於使用UUID。只要有人能猜到其他人的散列,這在統計上是不可能的。它發生的機率是天文數字高。

當然,總是有比猜測更容易訪問別人的散列的方法。諸如用戶的瀏覽器歷史記錄,攔截他們的網絡流量,查看他們的肩膀等等。只有SSL與保護性登錄系統結合才能防止這些事情發生。

0

安全總是帶來了這樣的問題。顯然,讓所有想要出門的人唯一的辦法就是讓每個人都出去!但是這並不奏效。

如果所有您感興趣的事情都是從另一個角度隱藏用戶的鍛鍊程序,那麼您所做的並不是問題,並且沒有安全問題。

如果有人猜測(或調查和發現)到另一個鍛鍊計劃的鏈接,那麼您無法做任何事情來阻止您的系統。如果這是一個問題,那麼你將不得不想出另一種方法來知道你是誰。如果你不關心人們積極嘗試接觸他人的鍛鍊計劃,只是試圖阻止他們偶然發生,那麼你沒有問題。

0

技術上它是完全一樣安全作爲登錄/口令對,每32個字符,即,很。即使蠻力強制隨機記錄也不是一種選擇。擁有十億用戶和每秒十億次蠻力嘗試,在你找到一個工作散列之前,它將需要超過宇宙年齡的10^100倍。

實際上還有其他的考慮,比如緩存代理,瀏覽器歷史等等。我建議不要用重要的數據來做這件事,但它的確是在向用戶展示和解釋它。

0

我認爲這不是一個壞主意,只要你不允許那些「魔法令牌」繼續工作到永遠。您應該將令牌存儲在數據庫中並記錄它們是否已被使用。一旦客戶使用魔法令牌到達系統,他們確實應該使用用戶名和密碼創建一個「正常」帳戶,就像互聯網上的其他每個網站一樣。在使用之後,令牌應被標記爲「已使用」,並且應該禁止進一步使用它。