之前在web項目里使用, 限制客戶端的鏈接是通過域名限制的方式.
現(xiàn)在我如果要在electron項目里使用, 是沒有域名的, 我要讓electron項目可以作為客戶端, 怎么做到只給electron使用呢?
自定義請求頭,請求頭可以傳一個自定義加密規(guī)則的 token
過來,后端判斷 token 是否合法,合法才允許后續(xù)操作
我有一個疑問, 就是websocket的客戶端是在頁面里通過js方式連接的socket服務(wù)端, 那么傳入的東西都是明文顯示在頁面源代碼里的, 這樣別人照樣傳入這個token不就行了嗎?即使加上過期時間, 別人也可以通過定時請求頁面獲得最新的token. 不知道我的理解是不是對的?
@3841:你不是都用 eletron 了么?這就不是明文了吧,eletron 不是將你的 h5 都打包到可執(zhí)行文件中了么?剛剛再細看了下,感覺你的 web 項目有些奇怪啊,控制域名。。。域名是你的,每個人當然都訪問你那唯一的域名,你怎么限制的客戶端。。。你確定能限制?如果你只是給 app 提供 api 就可以,當然別人反編譯你的 app 也是可以偽造的,只是難度的問題。如果有 pc 端網(wǎng)頁瀏覽之類的還是算了吧
是這樣的, 我使用的是web-msg-sender, 推送信息到網(wǎng)頁, 現(xiàn)在的情況是如果不限制域名, 任何人只要知道我的websocket服務(wù)地址, 就可以直接用socketio.js 在任意網(wǎng)頁中接收到我推送出去的消息. 所以在之前的web端項目里,我是限制了域名來處理的.
@WilliamA 的方法可以。
每個用戶token不一樣就行了,比如 $token=md5($username . '@#$9shnF(@)'); ,'@#$9shnF(@)'是保密的,這樣其他人猜不出來token,服務(wù)端驗證token的合法性就ok了。除了$token,還要用wss,這樣數(shù)據(jù)傳輸是加密的,其他人無法抓包獲取到token。