客戶端需要由服務器進行認證,所以需要發送憑證。憑據可以以加密形式存儲在客戶端數據庫中。由於服務器的證書是已知的,爲了提供最佳的安全性,客戶端可以使用服務器的公鑰來加密密碼。但現在的問題是如何在沒有雙重加密的情況下發送密碼。通過SSL發送預加密的數據
例如,假設服務器的認證URL是「https://example.com/a?u=user&p=password」,所以客戶端必須將此字符串的SSL加密數據發送到服務器。由於客戶端只存儲加密的密碼,因此必須找到將ssl_encrypt("https://example.com/a?u=user&p=")+pre_encrypted_password
作爲一個整體發送到服務器的方法。
客戶端正在使用WinHTTP api,那麼有沒有什麼辦法可以實現這一點?
很好的答案,但我想指出的是,即使結果是密碼等效的,也有一個預加密密碼的動機:如果相同的密碼用於不同的服務器。由於不知道原始密碼,因此無法學習並在其他網站上嘗試。這與在摘要認證中預先計算靜態HA1然後「忘記」原始輸入(用戶名,領域,密碼)類似。 – Celada
@Celada我認爲你應該評論答案,而不是問題;) –
@Celada無論如何,你只是在說我正在努力實現的目標。理想情況下,我希望在不更改現有服務器代碼的情況下執行此操作。但它看起來像是由於SSL的事實,它不能這樣做。 –