我考慮用最長的時間來使用Javascript書籤來爲我訪問的不同網站生成密碼,以避免「無處不在的類似密碼」的問題,但仍然是可移植的。但是,在閱讀this paper後,我很清楚使用這種方法意味着單個惡意頁面可能會危及我的整個安全。JavaScript密碼生成器的安全性考慮事項是什麼?
現在我正在思考下面的解決方案:一個小書籤,它只會做一件事:在新頁面中打開一個URL,並附加原始URL(例如http://example.com/password_man.html?url=slashdot.org)。位於來自example.com的頁面上的腳本將執行實際的密碼生成。
有沒有人看到這種方法的任何安全問題?雖然它比原來的方便,但據我所知,即使是惡意頁面也只能看到它獲得的密碼,並且而不是可以訪問敏感信息,如主密碼。我認爲這是否正確?
更多澄清:
- 密碼的生成將進行完全的客戶端。上面例子中提到的「password_man.html」將包含類似於已經包含在bookmarklet中的JavaScript代碼,它將包含一個輸入字段,用於指定主密碼
- 「url」參數的解釋也將做客戶端。我正在考慮在我的谷歌代碼帳戶(即password_man.html的v1234)上託管此文件,這將保證我不會更改用戶下面的頁面。
- 此外,HTTP/HTTPS不是問題,因爲所有的處理都是由客戶端瀏覽器完成的,所以沒有數據被髮送回服務器。您可能爭辯說,MITM攻擊可能會修改該頁面,以便在您使用明文協議(如HTTP)的情況下發回生成的密碼(例如主密碼),但如果你已經有了一個MITM情況,有哪些是容易做到的攻擊其他途徑(例如:窺探從被提交,或窺探會話ID的請求,密碼等)
更新 :在仔細研究並思考問題之後,我得出結論認爲,在同一頁面內不可能安全地做到這一點。即使小書籤只能捕獲域並打開一個新窗口(通過window.open),惡意網站也可以覆蓋window.open,這樣它會打開一個頁面副本,實際上可以捕獲主密碼(基本上執行一次phising攻擊)。
感謝您的快速回復。我已經添加了一些更多的說明,希望能夠解決您提出的問題。首先,生成的密碼取決於三件事:您的用戶名,您的主密碼和站點域,其中兩個必須輸入(用戶名和主密碼)。 其次,所有的處理都在客戶端完成,因此MITM攻擊者只能觀察正在下載的腳本,而不是數據來回傳輸。請求中附加的URL僅供本地JavaScript使用,以便爲您填寫其中一個字段。 – 2009-08-30 08:50:43