Re: [請益] REST 網站 api 安全性

看板Soft_Job作者 (.)時間7年前 (2016/10/01 09:38), 7年前編輯推噓2(2036)
留言38則, 9人參與, 最新討論串2/9 (看更多)
※ 引述《sean72 (.)》之銘言: : 假設我架設了一個大聯盟球員數據查詢網站 : 努力整理分析數據,又花錢租了server : 架構用rest api : 前端送api到server,後端傳json回去 : 如果某個路人看到我的網站整理的很棒 : 他也想做一個 : 那他豈不是只要自己寫個前端 : 然後使用和我一樣的api,我的server一樣會回應我所整理好漂亮整齊的json : 這個路人豈不是做起了無本生意嗎? : 請問這個問題有解嗎? 謝謝大家推文的回答 我了解"真的要爬擋也擋不住"這點 (我自己也是爬資料回來整理) 我在乎的是 不管是token, 時間hash 等等 對方只要模擬一下我的前端 我的server也同樣的會回應token給他 別人可以用同樣的api取得我的資料 而且不費工夫馬上套用到他的網頁中 他的前端不可能一邊爬 + 一邊parse + 一邊秀內容給user才對吧? 這樣每個end user都得是超級電腦才行 換個例子 假如我架設了一個交通資訊站 使用者除非要分享至FB或是給予評論,不然都不用登入或是驗證 有個餐廳美食網 他有一個規劃路線的輔助功能 但是美食網不找我談合作,也不redirect到我的網頁 而是從他的client side送一個 api到我的交通網 我的server要怎麼知道這個api是來自美食網的client side, 還是來自我自己交通網的client side? 美食網的client side也有可能跟我要token等等的,我也無從分辨 美食網的用戶查詢交通的次數也不高,我也無法從throttle下手分辨 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 204.96.168.3 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1475285937.A.88B.html

10/01 09:50, , 1F
只要你的前端是會變動的 不管是token還是時間hash,都很
10/01 09:50, 1F

10/01 09:50, , 2F
難摸擬阿,因為隨時會換 他現在能抓,過一會說不定就不行
10/01 09:50, 2F

10/01 09:51, , 3F
破解就跟機車大鎖一樣,只是時間問題,但你不做,問題更大
10/01 09:51, 3F

10/01 09:51, , 4F
至於取得token,可以用驗證的方式
10/01 09:51, 4F

10/01 09:52, , 5F
你的服務在沒有效益前,其實也無須過於緊張
10/01 09:52, 5F

10/01 09:52, , 6F
這種東西本來就是時間成本的問題,讓他用起來很難用就好
10/01 09:52, 6F

10/01 09:52, , 7F
就像寶可夢的 app,你看官方開發團隊有緊張嗎?
10/01 09:52, 7F

10/01 09:54, , 8F
你要是真的很緊張,就架設一個 叢集環境 db/api/fe/be
10/01 09:54, 8F

10/01 09:56, , 9F
api 只對內,不對外,反正也都是給 be/fe/db 的接口
10/01 09:56, 9F

10/01 10:28, , 10F
擺脫山寨、仿似、抄襲、擬化的實際行為只能不停止更新。
10/01 10:28, 10F

10/01 11:27, , 11F
除非資料涉及個資 不然這問題大可等到有人爬你資料時再解
10/01 11:27, 11F

10/01 11:27, , 12F
不遲
10/01 11:27, 12F

10/01 11:28, , 13F
順便吉吉他 再賺一條
10/01 11:28, 13F

10/01 13:13, , 14F
不能直接限制 Server 只讓前端連嗎?
10/01 13:13, 14F

10/01 14:43, , 15F
這篇的推文都是正解,增加複雜度或改由SERVER發請求(叢集化)
10/01 14:43, 15F

10/01 14:48, , 16F
不過整體來說沒什麼意義就是了...
10/01 14:48, 16F
※ 編輯: sean72 (172.89.32.145), 10/01/2016 16:28:22 ※ 編輯: sean72 (172.89.32.145), 10/01/2016 16:29:30

10/01 16:31, , 17F
取得token需要帳號密碼,這是oauth的安全機制,你可以設
10/01 16:31, 17F

10/01 16:31, , 18F
定定期換密碼
10/01 16:31, 18F

10/01 16:40, , 19F
我希望我的網站不需要登入即可使用
10/01 16:40, 19F

10/01 16:53, , 20F
簽一個 token 給美食網的 server 用,他們自己要保管好。
10/01 16:53, 20F

10/01 16:54, , 21F
當美食網使用者要查詢地址的時候,將出發點ajax給美食網,
10/01 16:54, 21F

10/01 16:55, , 22F
美食網server補上目的地跟token,轉發請求給你的server。end
10/01 16:55, 22F

10/01 16:59, , 23F
用錯詞了,上面的美食網三個字請替換成 "你的交通網client"
10/01 16:59, 23F

10/01 16:59, , 24F
簡單來說就是把你算路線的服務藏到叢集裡。
10/01 16:59, 24F

10/01 17:05, , 25F
抱歉上面都想錯了。
10/01 17:05, 25F

10/01 17:06, , 26F
如果你今天有一個 "開放給任何人使用的交通網"
10/01 17:06, 26F

10/01 17:07, , 27F
那你就沒辦法用程式的層面100%杜絕美食網偷用你的資料
10/01 17:07, 27F

10/01 17:10, , 28F
但是你可以透過 1.法律手段(eula) 2.反爬蟲手段
10/01 17:10, 28F

10/01 17:11, , 29F
逼美食網掏錢跟你合作
10/01 17:11, 29F

10/01 17:24, , 30F
這種方式下,把你的 api response 給加密,並且每小時換密碼
10/01 17:24, 30F

10/01 17:25, , 31F
或是給每個使用者簽發 1hr 過期的token
10/01 17:25, 31F

10/01 17:27, , 32F
再把你的code給uglify之後,可以達到一定的反爬蟲效果。
10/01 17:27, 32F

10/01 17:37, , 33F
哦對了,既然對方是個美食"網",那你可以先上個cors
10/01 17:37, 33F

10/01 18:01, , 34F
等到他們用server發請求之後,ban or throttle server ip
10/01 18:01, 34F

10/03 13:55, , 35F
api(post)+別開放cross domain 對方就必須經過你的網站 = =
10/03 13:55, 35F

10/03 13:56, , 36F
題外話:只是經你網站一樣能拿走資料(爬蟲)就是了
10/03 13:56, 36F

10/03 13:57, , 37F
真的要玩大點 就是各種妨礙逼對方解JS EX:將資料轉成canvas
10/03 13:57, 37F

10/03 13:58, , 38F
輸出 XD..逼對方解你的JS 在即時中從你的記憶體拿資料
10/03 13:58, 38F
文章代碼(AID): #1NxnEnYB (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1NxnEnYB (Soft_Job)