我正在構建一個帶有Java後端的Google App Engine Web應用程序,該應用程序嚴重依賴瀏覽器中的JavaScript/JQuery(您可以看到它here)。什麼是通過AJAX驗證用戶的最簡單安全的方式?
我想實現一個用戶認證機制,這也將依賴於AJAX(即他們將能夠註冊和登錄,而無需刷新頁面)。
我不想依賴Google的身份驗證,因爲我發現很多人都不願意放棄他們的GMail電子郵件地址,但我希望在將來通過Google/Facebook/Twitter等支持身份驗證。
我喜歡Reddit的用戶認證方法的簡單性。
我擔心的是,因爲人們不會通過HTTPS使用我的應用程序,所以我不希望通過HTTP以明文形式發送密碼。我還希望依賴某種祕密令牌(可能是密碼和一些服務器提供的「鹽」)的哈希,這可能會被攔截和欺騙。
與此同時,我不希望爲實現身份驗證機制付出巨大的努力。
有沒有一種方法可以給我想要的簡單性,但通過HTTP安全嗎?
編輯:我剛剛意識到Google App Engine確實支持HTTPS,但前提是您通過* .appspot.com網址連接您的網站。不幸的是,由於跨站點腳本的限制,你不能對此進行AJAX調用 - 儘管我猜想用JSONP可能會有這種情況。
那麼,是使用JSONP + HTTPS + *。appspot.com這裏最好的方法嗎?
感謝您的答案,但恐怕揭露appspot.com域不是一個選項,它太難看了。我不介意用戶是否看到該網站是安全的。例如,Reddit通過HTTPS提交登錄信息,但用戶沒有看到它。我認爲沒有任何證據表明Reddit的採用受到缺乏*可見*使用HTTPS的限制。 – sanity 2012-02-02 15:15:02
噢,我不確定我可以同意你*必須*使用HTTPS通過HTTP進行安全通信,因爲你總是可以在JavaScript和服務器上手動執行加密。當然,在初次下載JavaScript代碼的情況下,您仍然很容易受到MITM的影響,但我更擔心Eve比Mallory。 – sanity 2012-02-02 15:17:38
如果你不想讓他們看到https,並且你不需要保存安全的cookie,那麼jsonp + https到appspot.com應該可以正常工作。也許你可以用JavaScript實現你自己的SSL,但是你提到你想避免重新發明輪子。而且......爲什麼要麻煩呢,如果它反正會受到MITM的影響呢?如果有人關心足夠的竊聽,最終有人會關心建立一個MITM。 – 2012-02-02 15:48:40