當這些服務器通過我們的測試時,我的客戶站點會按照IP爲其客戶提供證書。此認證僅適用於經過測試的IP。所以我們需要成爲服務證書的人員,以便我們驗證顯示我們證書的網站確實是由我們測試的。因此,當客戶的用戶點擊證書鏈接時,他們可以相信該網站確實經過了我們的測試(該網站沒有被另一臺未經我們測試過的服務器提供服務,但聲稱是) 。
siteB.com/certificate.php?companyid=1234 &服務器ID = 4321個
過程簡化:
用戶通過看起來像這樣的鏈接指向我們的網站
- 用戶現場A
- 用戶單擊指向我的站點(站點B)的鏈接查看站點A的證書。
- 我的站點,站點B需要驗證它確實是正試圖顯示由網站A.賺
最初證書站點A,我認爲$ _ SERVER變種可能有一個值來表明誰引用的服務器是,但我收到的答覆,發佈有關該問題表明,雖然該信息存儲在$ _SERVER [「HTTP_REFERER」],它是不可靠的(插件或用戶可能會修改此值)。
由於我不能依賴於此,我需要另一種方法來驗證引用的服務器是誰,他們聲稱是。我考慮使用一次性使用令牌,但是然後有效的服務器可以將令牌簡單地傳遞給客戶擁有的其他服務器(尚未經過測試),並且客戶可以通過這種方式將任意數量的服務器聲明爲被認證由我們僅以一次測試的價格(以及破壞證書的完整性)爲準。
我想知道如果這個問題是不可能做出一個萬無一失的解決方案,並且最好的可以做的是混淆不受控制的端點(客戶的服務器)意味着張貼關鍵指示他們是(例如,一個鬼鬼祟祟的客戶必須閱讀一些混亂的JavaScript,或者爲了欺騙系統而拆卸閉源客戶端程序)。
我的想法到目前爲止是這樣的(和它的可怕):
我需要做一個封閉源代碼的程序運行客戶端,可能通過Native Client這將在點擊啓動證書鏈接在客戶網站(網站A)上首先通過我的網站(網站B)驗證自己,然後打開與網站A的服務器,網站B的服務器和用戶在網站B中的三方通信線路將驗證網站A是他們自稱是誰,然後向用戶返回證書或錯誤消息,說明證書無法加載的原因(例如連接超時)。
網站B上的腳本與用戶NaCl程序的公開流將use curl獲取站點A的服務器的IP地址並進行驗證。
對我來說,這是一個非常粗的解決方案(如果它甚至是一個解決方案),雖然大多數用戶不會在意看別人的證書,讓誰做護理去赴湯蹈火的用戶(安裝並運行NaCl計劃)只是看看證書就是瘋狂。
這感覺就像一個有點愚蠢的問題,但會運行此閃存,而不是隻是作爲安全/不安全運行一個程序的NaCl?
當然,有一種更好的方式去做的這一切......
太棒了!我不知道ORIGIN標題。在查詢字符串中使用ajax驗證並重定向到帶有一次性使用標記(在驗證響應中提供)的證書頁面的URL聽起來很完美。就像你說的那樣,客戶沒有理由想改變這個頭值。謝謝,戴夫! – 2013-03-05 02:12:34
酷!如果你需要任何幫助編程,請告訴我。我很樂意這樣做!哈哈 – 2013-03-05 03:05:00