2012-10-03 46 views
0

我試圖找到一個合理的解決方案來通過API系統在客戶端和服務器之間執行身份驗證。然而,API本身並不是我的問題,我的問題在於,瀏覽器通常支持cookie以及讓服務器知道它是做什麼的其他方式,但對於使用任何自定義應用程序編寫的應用程序,情況並非總是如此可能的語言。API客戶端身份驗證和數據加密

我有看一些其他的問題,答案是有用的,例如: Authentication between client-side JavaScript application and Server Side HTTP API?

不幸的是,我已經想到這一點,並沒有實現安全的水平,我很後。我需要的建議是在實現(或者模擬)一種可用於服務器到客戶端腳本的SSL(服務器和客戶端不一定支持SSL)時採取的方法。

與此同時,這需要用於識別客戶端。

總而言之,我需要實現會話保持系統和數據加密系統,這些系統將與Apache和PHP以及用任何設備上運行的任何語言編寫的客戶端一起工作。

對不起,如果問題是有點長囉嗦。

回答

1

如果不使用SSL/TLS,您無法在瀏覽器和客戶端之間合理獲得安全的系統。原因是無法信任來自服務器或客戶端的信息。由於客戶端從服務器運行不受信任的代碼,因此不能信任頁面內的任何JavaScript等。

缺少的是驗證方法。 SSL/TLS通過在瀏覽器中使用受信任的證書存儲來提供此功能。不幸的是,沒有(標準化的)從腳本語言使用可信任商店的方式。你可以嘗試一個簽名的Java Applet,但我認爲這種方法不會讓你受歡迎。

所以基本上你應該訴諸使用SSL/TLS。我不認爲有許多瀏覽器不支持SSL/TLS,不支持SSL/TLS的瀏覽器不太可能支持高級身份驗證方法。

+0

然後,我想從安全的角度來看,我將不得不依靠技術來進行溝通。對此的另一個方面是,因爲我正在構建一個API服務,假設任何能夠向HTTP服務器發送請求的應用程序也能夠提供相同的請求標頭,PHP能夠從瀏覽器的大多數請求中讀取這些請求標頭是否安全? PHP能夠爲這些應用程序保留會話嗎? – Flosculus

+0

這是另一個問題,Flosculus。 –

+0

謝謝,我發佈在這裏http://stackoverflow.com/questions/12717522/non-browser-sent-http-request-headers-and-php,你回答我的第一個問題。 – Flosculus