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

作者: sean72 (.)   2016-10-01 09:38:55
※ 引述《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下手分辨
作者: robler (章魚丸)   2016-10-01 09:50:00
只要你的前端是會變動的 不管是token還是時間hash,都很難摸擬阿,因為隨時會換 他現在能抓,過一會說不定就不行
作者: maxqq (max)   2016-10-01 09:51:00
破解就跟機車大鎖一樣,只是時間問題,但你不做,問題更大
作者: robler (章魚丸)   2016-10-01 09:51:00
至於取得token,可以用驗證的方式
作者: maxqq (max)   2016-10-01 09:52:00
你的服務在沒有效益前,其實也無須過於緊張
作者: robler (章魚丸)   2016-10-01 09:52:00
這種東西本來就是時間成本的問題,讓他用起來很難用就好
作者: pttworld (批踢踢世界)   2016-10-01 10:28:00
擺脫山寨、仿似、抄襲、擬化的實際行為只能不停止更新。
作者: pooznn (我~~~是來被打臉滴!!!)   2016-10-01 11:27:00
除非資料涉及個資 不然這問題大可等到有人爬你資料時再解不遲順便吉吉他 再賺一條
作者: luciferii (路西瓜)   2016-10-01 13:13:00
不能直接限制 Server 只讓前端連嗎?
作者: TSW (翹班帝國)   2016-10-01 14:43:00
這篇的推文都是正解,增加複雜度或改由SERVER發請求(叢集化)不過整體來說沒什麼意義就是了...
作者: doranako (真愛無限)   2016-10-01 16:31:00
取得token需要帳號密碼,這是oauth的安全機制,你可以設定定期換密碼
作者: sean72 (.)   2016-10-01 16:40:00
我希望我的網站不需要登入即可使用
作者: TSW (翹班帝國)   2016-10-01 16:53:00
簽一個 token 給美食網的 server 用,他們自己要保管好。當美食網使用者要查詢地址的時候,將出發點ajax給美食網,美食網server補上目的地跟token,轉發請求給你的server。end用錯詞了,上面的美食網三個字請替換成 "你的交通網client"簡單來說就是把你算路線的服務藏到叢集裡。抱歉上面都想錯了。如果你今天有一個 "開放給任何人使用的交通網"那你就沒辦法用程式的層面100%杜絕美食網偷用你的資料但是你可以透過 1.法律手段(eula) 2.反爬蟲手段逼美食網掏錢跟你合作這種方式下,把你的 api response 給加密,並且每小時換密碼或是給每個使用者簽發 1hr 過期的token再把你的code給uglify之後,可以達到一定的反爬蟲效果。哦對了,既然對方是個美食"網",那你可以先上個cors等到他們用server發請求之後,ban or throttle server ip
作者: bndan (seed)   2016-10-03 13:55:00
api(post)+別開放cross domain 對方就必須經過你的網站 = =題外話:只是經你網站一樣能拿走資料(爬蟲)就是了真的要玩大點 就是各種妨礙逼對方解JS EX:將資料轉成canvas輸出 XD..逼對方解你的JS 在即時中從你的記憶體拿資料

Links booklink

Contact Us: admin [ a t ] ucptt.com