2017-04-10 110 views
0

現在我的服務器都運行良好,並使用ajax同步GET和POST請求(Json)到我的後端。問題是我懷疑這是一個安全的方式來實現我的目標。我有幾個問題。正確連接前端到後端的方法?

  1. 我對它的理解是,客戶直接通過網頁/ AJAX訪問後端,不是前端。這是一個正確的思考方式嗎?

  2. 請問解決方案是從用戶獲取數據,然後通過正在運行的前端,然後張貼到後端節點服務器發送?

  3. 在哪裏有ssl步驟?

  4. 在當前方法中的後端地址(http://backend.com/data)是公共的,這是一個問題?

  5. 是否有覆蓋基本網頁安全的清單?我似乎無法找到一個。

這是我的javascript代碼在我的網頁

$.ajax({ 
     type: 'GET', 
     url: 'http://backend.com/data', 
     success: function(data) { 
     extresults = data; 
     console.log(extresults); 
     } 
    }); 

    $.ajax({ 
     type: 'POST', 
     url: 'http://backend.com/data', 
     data: {"la" : "lala"}, 
      success: function(data) { 
     alert("post is good"); 
     } 
    }); 
+0

這是不可能回答。 你在談論過於抽象的東西。可能你對cleint/server關係的理解是錯誤的。 AJAX請求IT是客戶端/服務器請求。作爲來自瀏覽器的任何請求的簡單HTTP請求。 –

回答

0

我有一個小麻煩了解你的客戶端與「客戶端 - 服務器」的意思的HTML,所以我要去以略高的抽象水平回答這個問題。

在最基本的層面出發,連接需要有三個屬性,然後才能開始調用它的安全;保密性,驗證和驗證。

安全連接必須是保密;也就是說,第三方不能讀取或修改正在傳送的數據。此屬性通常由HTTPS(用於Web應用程序)通過加密提供。如果數據在傳輸過程中被加密,則第三方將無法閱讀它,因爲它們缺少必要的密鑰。另外,在設計良好的密碼系統中,攻擊者將無法以有用的方式修改數據。它們可以用隨機數據替代,但是如果沒有密鑰,他們就無法發送解密到他們想發送的數據的消息。要麼解密將失敗,要麼將解密爲一些不可預知的值。

安全連接必須經過驗證,這意味着通信雙方都需要知道對方是誰。在服務器端,HTTPS提供了這個屬性;服務器將顯示其HTTPS證書,並且客戶端知道只有證書的所有者才能以此方式呈現它。因此,如果客戶信任證書,也就是說他們相信證書頒發者證實證書的所有者是他們所說的那個人,他們知道服務器是他們認爲的那個人(這是一個總體過於簡單化,我建議查找HTTPS的實際工作方式)。但是,在服務器端,您需要一些驗證客戶端身份的其他方法;您不需要證書即可成爲HTTPS連接中的客戶端(儘管您可以使用它!我會查找HTTPS客戶端證書)。這是通過一些「登錄」方法處理的。通常,客戶端以nobody身份啓動連接,並向服務器提供一些證明客戶端具有特定身份的信息;用戶名和密碼,簽名,OTP等。一旦客戶證明了他們的身份,服務器通常會給他們一個cookie,其中包含一個證明他們已經證明他們身份的價值;一個大的隨機隨機數,一個簽名的令牌等等。

最後,安全連接必須是驗證。即使你知道你的數據沒有被篡改,並且你已經驗證了你在與誰交談,你仍然不應該盲目地信任你收到的數據。客戶端並不關心從服務器接收到的數據,但驗證服務器從客戶端接收的數據至關重要。這意味着您不應該將從客戶端收到的任何數據放入命令調用,SQL查詢等。您也不應該依賴任何客戶端數據來實現敏感的程序流;不要通過在他們的請求中查找「admin = True」參數來檢查用戶是否爲管理員。始終驗證您收到的數據是您在對數據做任何事情之前所期待的。

總之,您應該在您的服務器上安裝證書並設置HTTPS;在接受任何數據之前,要求客戶端進行身份驗證(通過某種方法);並在使用之前驗證傳入的數據。

相關問題