2012-07-18 66 views
2

這不是一個關於某些javascript詳細信息的具體問題,但我正在尋找驗證,以確定我創建的模型中沒有明顯的漏洞。我決定推出自己的認證程序(除了使用bcrypt在後端散列),其工作是這樣的:使用ajax的JavaScript應用程序的身份驗證模型

  1. 用戶(瀏覽器或PhoneGap的創建本機應用程序)報> JSON對象使用jQuery的AJAX發佈後端使用bcrypt處理密碼並保存密碼用戶配置文件數據
  2. 後端根據客戶端IP地址生成並保存它返回的令牌(隨機哈希,如/ dev/urandom)
  3. jQuery插件存儲令牌到當地的cookie
  4. 當發出一些請求(發佈,評論,但不是太頻繁)時,它會從cookie並將其添加到json中,並使用ajax將其再次發佈
  5. 後端檢查該令牌是否存在並且尚未過期(有效期爲7天),檢查該IP地址是否相同,並且如果ok驗證請求json數據並處理該請求
  6. 當令牌已過期的登錄畫面中示出和憑證張貼AJAX並且如在步驟中創建一個新的令牌2.

一切順利通過SSL進行AJAX請求和無密碼存儲任何地方。如果超出閾值,還會有一種機制檢查蠻力標記垃圾郵件是否會暫時阻止源IP。這不是一個高安全性的應用程序,但要尊重用戶數據並確保其「足夠」安全。

我希望這個問題具有資格,即使它不是特定的,並且作爲其他人的參考,如果它會引發一些討論。我無法找到有關此特定方法的任何最佳練習教程。

更新:認證機制根據收到的反饋進行更新,因爲它似乎對於非關鍵Web應用程序來說是'足夠安全'的。

+0

生成一個隨機令牌,比如'/ dev/urandom'不使用md5,它被破壞並且不是一次性使用令牌的最佳工具。 – rook 2012-07-18 19:57:44

+0

感謝您的提示,我會研究一種生成令牌的替代方法。你能告訴我如何創建一個隨機的阿爾法 - 數字字符串,因爲我沒有使用它來散列密碼等?熵是否比替代品或其他東西更糟? – 2012-07-19 16:58:37

回答

2

考慮到你說你的應用程序不是一個高安全性的應用程序,而且你想要基本的安全控制,我試圖覆蓋從高層次角度來考慮的所有事情。

身份驗證流程及其使用的機制對我來說似乎很好。我在這裏看到的唯一關注點是會議管理本身。使用MD5生成會話令牌是很好的(取決於您是否使用了正確的僞隨機函數,它們以正確的方式播種),儘管如果有人嘗試爲您的令牌創建衝突,SHA1/SHA256可能會是更好的選擇。

我在這裏看到一些遺漏的東西 - 它們可能被省略,或者它們可能不在那裏,所以我會提及它們。第一件事 - 你沒有提到你是否確保用戶和你收到的cookie之間存在匹配。您需要確保這兩個匹配,以便一個用戶不能竊取第二個用戶的會話。

我在這裏看到的第二件事是驗證cookie是不是從用戶那裏偷來的。例如,如果我設法從用戶​​那裏竊取會話cookie,然後從另一個地方在我自己的計算機上重播它,我仍然可以使用當前的會話處理機制進行登錄。

您需要一種方法來唯一標識請求來自哪臺計算機 - 一種方法(以及一種名爲CodeIgniter的PHP框架執行此操作的方式)是通過驗證IP地址以及用戶代理該請求來自。後者很容易被欺騙,但前者更難。這使得您的會話對攻擊更具彈性 - 除非應用程序在公共機器的網吧中使用,並且用戶尚未註銷。

這使我想到了我的最後一點 - 我沒有看到這裏提到的註銷機制,以及註銷是如何執行的。基本假設是,只要用戶註銷,您就會使會話cookie失效,並且不會再次接受該會話cookie。如果您還沒有這樣做,那麼您可以做其他事情來確保會話的安全性。

+0

會話連接到後端的用戶。如果用戶的cookies在另一個客戶端被攻破並重新使用,那麼沒有機制來阻止SessionID。但是如果我的會話連接到IP地址,那麼dhcp lease expired也會使會話失效,對吧?有沒有另外一種方法呢?像一些'瀏覽器ID'?註銷功能存在,基本上刪除後端的cookie和會話。 – 2012-07-22 08:14:40

+1

對於更受歡迎的ISP而言,這種可能性並不高,但它始終存在。我是一個更偏執的安全人員,所以如果知識產權發生變化並讓他們重新認證,我會說會話無效 - 但是,這不是用戶友好的,可能不是您想要的。唯一的瀏覽器ID很難創建,並且很容易被欺騙。一個好的(也有點難)解決方案是擁有不斷更新自身的短期會話ID。因此,如果舊會話ID有效,請創建新會話ID,使舊會話ID無效。所以,即使一個cookie被盜,它的短暫存在,所以它已經過期了。 – 2012-07-23 21:40:50

+0

好的,我將應用IP限制,如果用戶沒有報告問題,我將把它留在那裏。我不認爲會有更多的反饋意見。似乎只有少數變化,解決方案「足夠安全」,因此我將關閉Q以供其他人蔘考。 – 2012-07-24 17:51:02

相關問題