所以,如果我理解正確你的問題:
- 你可以使用跨域請求訪問的Web應用程序。
- 該應用程序將部署在本地網絡上,即它將通過非公共IP地址(服務於該網絡的機器,我將稱之爲「本地服務器」)訪問。
- 您希望保護客戶端和本地服務器之間的鏈接,最好使用SSL。
你可以這樣做!使擁有本地服務器控制權的人獲得somesubdomain.SomeDomainHeControls.com
的SSL證書,將該證書部署到本地服務器,並將該子域指向本地IP。當通過該地址訪問應用程序時,您將不會收到任何警告,並保證連接。只要客戶端只使用該域訪問您的應用程序,這是安全的,因爲只有服務器的所有者才能訪問該密鑰。
如果您自己控制本地服務器(無人可以提取私鑰),則可以簡單地爲*.aDomainForThisPurposeThatYouControl.com
獲取wildcart證書,併爲每個部署創建一個指向相應IP的子域。
如果您不控制本地服務器,並且誰不能獲得自己的證書,您可以獲得個人證書。這意味着您創建了deployment1.aDomainForThisPurposeThatYouControl.com
,將其指向本地IP,爲該名稱創建常規單主機證書,並將其安裝在本地服務器上。爲了安全起見,請不要將該域用於其他任何事情,因爲您已經爲該域上的主機提供了私鑰。
如果本地網絡可以訪問互聯網,您也可以在您控制的外部服務器上託管應用程序本身。將常規SSL部署到該服務器。在安全地從外部服務器加載應用程序本身之後,它可以使普通的HTTP請求從本地服務器獲取數據。這將觸發「混合內容」警告,但沒有SSL錯誤。然後,您可以使用基於JavaScript的加密來保護數據。例如,如果只希望保護從客戶端到服務器的數據,則外部可信服務器可以向客戶端提供受信任的JS加密庫和內部服務器的RSA公鑰(通過SSL認證的連接),那麼您只需在通過普通HTTP發送數據之前在客戶端加密數據。理論上,您甚至可以在JavaScript中創建SSL客戶端,向客戶端提供腳本和可信服務器證書,使用HTTP或WebSockets隧道,並通過此隧道在本地服務器和JavaScript客戶端之間運行您自己的SSL連接。這當然不是很實際,但是很安全(因爲JS是通過安全連接下載的)。您也可以從受信任的服務器加載一個小型JavaScript,然後從本地服務器下載剩餘的JavaScript,驗證簽名/散列並執行它。 Megaupload正在做類似的事情。
「應用程序只使用JavaScript,我不知道如何保護它」我會說,因爲JavaScript是客戶端語言,您無法保護它! – 2013-05-03 11:24:18
WIFI在此設置中的作用是什麼? – likeitlikeit 2013-05-04 11:29:50
即使通過Open Wi-Fi訪問您的Web應用程序,使用SSL(HTTPS)也將提供安全通信(完整性和機密性),因爲所有HTTP請求和響應數據在通過網絡發送之前都已加密。保護Wi-Fi涉及使用無線安全協議之一,有線對等保密協議(WEP)或Wi-Fi保護訪問協議(WPA)(http://en.wikipedia.org/wiki/Wireless_security),它可以無論使用SSL,都可以使用,以保護您的開放式Wi-Fi。請注意,SSL可在您的客戶端和您的網絡應用程序之間提供互聯網保護。 – 2013-05-07 18:48:49