天天看點

樂優商城--關于微服務的安全問題

1.微服務位址如果不消息暴露,如何處理?
  • 首先位址不會暴露,因為所有微服務都是通過zuul進行通路(微服務之間通過區域網路進行通路,不經過外網),對外暴露的隻有Zuul。其實Zuul也沒有真正暴露,因為Zuul還進行了nginx反向代理。真正對外暴露外網ip的是nginx。
  • 萬一暴露了呢?
    • 服務間鑒權:我們需要在背景管理系統中專門有一套權限管理的頁面,它來管理各個微服務及微服務與微服務之間的通路權限,我們需要額外定義表。首先得有一張微服務表,定義所有微服務唯一id、名稱以及一些身份資訊;還有一張表是微服務權限表,這張表要記錄其中一個微服務A可通路的其他微服務的id關系,形成一個表關聯。這樣就把服務與服務之間的可通路的關系給記錄下來了。
    • 我們一個服務要想通路另外一個服務,必須在背景管理頁面當中 給它授權才行:

      比如,搜尋微服務調用商品微服務:

      搜尋微服務在發起請求時,必須首先自動的向ly-auth發一次請求,完成權限認證(可以放在項目啟動時)。把得到認證的token必須緩存到微服務當中,并且攔截搜尋微服務中的每一次請求(Feign請求)

      服務間通過Feign來完成,Feign攔截器,在請求發出之前,先去判斷有沒有token,如果沒有,重新申請一下;如果有,把token攜帶在真正的請求參數裡一起發送到商品微服務中,商品微服務也得寫一個攔截器,對所有請求進行攔截,攔截下來以後,優先判斷token,判斷有沒有通路權限,如果有,則放行(采用Jwt+RSA)

2.如果cookie被禁用怎麼辦?
  • 首先可以提示使用者,網站必須使用cookie,不能禁用。
  • 把token放入頭(response)中傳回,JS中擷取頭資訊,存入web存儲(LocalStorage,SessionStorage),每次請求都需要手動攜帶token,寫入頭中。
3.如果cookie被盜用怎麼辦?
  • 我們的cookie無法篡改(簽名)
  • 加入ip位址識别身份到載荷裡(不太好)
  • 資料傳輸采用Https協定(非對稱加密),防止資料洩露(電腦被黑/網絡抓包)

繼續閱讀