2011-03-08 61 views
1

我想將第三方服務的集成添加到以Android/iOS(和更高版本的Windows Phone)爲目標的Web應用程序(用HTML和Javascript開發)。因此我可以使用所有「現代」功能。此第三方服務需要憑據並通過GET參數進行控制。
例如,請求url可能看起來像「http://www.example.org/foo?username=user & password = 1234」。如何使用Javascript保存登錄憑據?

將第三方服務更改爲接受散列密碼是沒有選擇的,因爲我無法訪問它。

由於用戶每次使用服務或啓動應用程序時都不想輸入他的用戶名和密碼,我想以某種方式保存他的憑據。

現在我想知道,最好的辦法是什麼。
我知道真正的「安全」在這裏是一種幻覺,但我不想通過以錯誤的方式保存憑據來將憑據暴露給不必要的風險。

我已經想到了幾種可能的方式

  • 普通餅乾:最 簡單的方法 - 它是「安全的」 足夠在這種情況下?
  • DOM-Storage: 與 關係中的Cookie有何區別?
  • 加密的Cookie: 憑證將被加密,但 當您查看頁面的源代碼或調試頁面時,您可以輕鬆找到密鑰 。

我應該選擇哪一個?有沒有更好的方法?
實際上值得一提的是,它可以很容易地被破解,這是困擾着encrpytion嗎?

回答

2

所有的方式都很糟糕和不安全。所以發送用戶名和密碼作爲獲取參數 - 你甚至通過https運行這個?

這樣做的方法通常是不存儲用戶名/密碼,而是存儲標識用戶會話的GUID /哈希值,然後讓該會話持久化。

這樣,即使其他人能夠訪問會話,他們也不會擁有用戶名/密碼。作爲其中的一部分,人們不能改變密碼,除非他們提供現有的密碼。

如果絕對需要發送用戶名/密碼,請通過後端代理連接到第三方服務並進行身份驗證。

+0

是的 - 第三方服務使用https。然而,我*不能*改變它 - 我真的更喜歡只存儲會話標識符。但那不可能。 – Matthias 2011-03-08 12:28:41

+0

@ winSharp93:如果您使用後端代理進行身份驗證,則無需將用戶名/密碼公開給客戶端 – 2011-03-08 12:30:25

+0

也不可能。我只能將純HTML/Javascript文件上傳到我的服務器。 – Matthias 2011-03-08 13:02:13

相關問題