2014-01-16 67 views
2

因此,我有一個頁面在html頁面中使用輸入字段的ajax來張貼json數據。從javascript發送一個共享密鑰進行身份驗證

ajax發佈到一個不同的服務器,服務器當前檢查授權標頭,並將其與共享密鑰進行比較,如果密鑰匹配json請求執行(請求通過https完成)。

我擔心的是任何人都可以打開源代碼並查看共享密鑰,這意味着任何人都可以向我的服務器發送經過身份驗證的請求(錯誤)。

因此,我想加密密鑰,但這只是讓我再次遇到第一個問題。

我無法從生成html頁面的相同服務器(在服務器端)執行json請求,因爲它太慢了。我可以控制發送的內容,但不會在發送時發送。

我正在使用ajax調用,因爲我需要立即使用這些數據。

我該如何創建一個令牌,一個惡意用戶不能僞造,所以我可以相信這個json請求來自我期望它來自的服務器/頁面?

+0

會不會https(而不是http)做的伎倆? –

+0

@barakmanos:https只是確保數據不會被*路由*篡改,而不是在源頭僞造。 –

+0

感謝您的額外知識:) –

回答

0

之後的評論我更好地理解您的用例:服務器A將用HTML表單作出迴應,用戶完成後,它將被提交給服務器B.您如何確保表單發佈到B實際上來自html表單,而不是來自其他地方?

一個短命令代替一個唯一的密鑰會更好,但是使用像nokogiri或jsdom這樣的任何人都可以輕鬆地解析你的表單併發出自動請求。

我認爲一個驗證碼機制,如Google reCAPTCHA是你在找什麼。瀏覽器中的頁面將使用公鑰向驗證碼服務器請求驗證碼,用戶必須從圖像中輸入這些字母,然後在提交表單後,服務器B將用祕密驗證該值。

+0

什麼是阻止惡意用戶調用生成此JWT的html頁面,然後立即使用JWT調用API?它並沒有真正解決問題,它只是增加了一個額外的步驟,使惡意用戶的流程更難,但仍然相對簡單。 FWI:服務器A是Salesforce(APEX),服務器B是C#(WEB API)。 – user1515024

+0

用戶憑證,您在通過身份驗證後會從服務器A獲得JWT。 –

+0

沒有用戶登錄,因爲服務器A上填寫了表單,數據被髮送到服務器B. – user1515024

相關問題