前端唯一標識問題

今天在項目中遇到一個前端唯一標示的問題,特此記錄一下。

項目的系統架構如下:
在這裏插入圖片描述
整個網絡環境分爲內網環境和外網環境兩個部分,內網的用戶客戶端1和客戶端2通過雙網卡前置機的代理訪問外部公網環境的網站,外網環境的客戶端3和客戶端4直接訪問外網的網站。

網站中有個界面只允許內網用戶訪問,如何解決?(訪問該頁面時,Web會進行一個自動登錄操作,如果登錄成功了則正常獲取頁面數據進行顯示)

方法一:後臺對該界面增加IP地址過濾

由於內網用戶發起的網絡請求通過Nginx代理最後都是以相同的IP請求服務器,所以後臺可以增加IP地址白名單,如果請求IP是前置機的公網IP,則返回登錄成功,允許訪問該頁面,如果不是白名單中的IP,則返回登錄失敗,不允許訪問該頁面。

方法二:前端發起網絡請求時增加唯一標識
在原生Android App中,我們經常使用設備IP地址、MAC地址等等作爲移動設備的唯一標識,或者通過短信驗證等方式,所以團隊中有人提出了方案二。雖然方案二和方案一本質上一樣,都是對IP地址進行過濾,但是還得記錄一下,因爲方案二實現時遇到一些問題。

問題就是JS如何獲取本地客戶端的唯一標識,或者說如何獲取本地客戶端的IP或者MAC地址?

答案可能令人比較失望,就是前端JS沒有辦法獲取到本地客戶端IP或者MAC地址

當然有一些迂迴的方法可以一定程度上實現,特此記錄下:

(1)IE瀏覽器下通過ActiveX的方法
該方法的侷限性不言而喻,就是必須限定瀏覽器爲IE,而且需要手動啓動ActiveX。

(2)通過第三方API獲取公網IP
可以通過第三方的IP地址查詢接口獲取到客戶端的公網IP,該方法的侷限性在於僅僅只能獲取到公網IP。

(3)通過webRTC獲取本地IP
該方法的原理是通過建立webRTC (網頁即時通信,Web Real-Time Communication)連接,在連接中獲取客戶端本地IP,侷限性在於相對麻煩。

備忘
1、如何查看PC的本地IP和公網IP?
本地IP通過ipconfig查看即可,其中的IPV4地址即爲本地IP,如下圖:
在這裏插入圖片描述

公網IP可以在百度中“IP地址”快速查看,如下圖:
在這裏插入圖片描述
2、公網IP和本地IP的區別?
什麼是公網IP?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章