推 qazwsxee: Header裡帶一組依時間變化的Hash碼 10/01 05:30
→ qazwsxee: sha1($time.'xxx任意字串') => 產生hash碼 10/01 05:31
→ qazwsxee: 只有你的程式知道當前時間(最低到分:2016-10-01 05:30) 10/01 05:33
→ laject: post+csrf...? 10/01 05:33
→ qazwsxee: 要再搭配什麼字串才能產生正確hash碼,API需要驗證hash 10/01 05:34
→ qazwsxee: 驗證hash是否符合當前這分鐘或是前一分鐘的hash 10/01 05:36
→ qazwsxee: 就能保證只有你的程式才能成功從api取得資料 10/01 05:37
→ laject: 一般在RESTful get是允許任何人read 10/01 05:39
→ laject: 把所以取得資料從get改成post,再加上csrf 10/01 05:40
推 alog: 現在很多技術要弄到你的資料其實很容易的 不論接你json還是 10/01 06:55
→ alog: 爬整個網頁 10/01 06:55
→ alog: 或是監聽你加密過的資料只要用同個解密的方法一樣解回 10/01 06:57
推 alog: 你只能透過一些比較奇異的方式來ban機器人,例如定時檢查的v 10/01 07:00
→ alog: iewport是否合理,因為爬網頁的觸發到js 爬 json 的 通常沙 10/01 07:00
→ alog: 盒的viewport很小 10/01 07:00
→ alog: 根本不會是正常人會使用到大小 或是提供一些誘因讓使用者要 10/01 07:02
→ alog: 透過會員的身分才能存取 或獲得更方便的檢索、自動更新的功 10/01 07:02
→ alog: 能 10/01 07:02
推 seadog007: 真的要爬其實擋不掉(寫過大量爬蟲跟自動化流程的路過 10/01 07:03
推 alog: 不過說真的 做這類數據 應該也是爬別人資料分析起來的吧 10/01 07:05
→ alog: 那些官網也沒有很care吧 10/01 07:05
推 imasaka1117: 我記得預設不是鎖網域的嗎?要開放才能讓大家call 10/01 07:05
→ alog: 不過你不甘願也可以針對特定的機器人 喂他假資料 10/01 07:06
→ imasaka1117: 還是我會錯意了QQ 10/01 07:06
推 laject: 鎖ip感覺好像是最快的XDDD 10/01 07:07
→ alog: 以前是預過一個新增什麼就跟著爬的 10/01 07:07
推 imasaka1117: allow cross domain 10/01 07:08
→ alog: 因為在那個區域很競爭很多廠商都想免費接資料 10/01 07:08
→ alog: 我就針對他的機器人給他塞了一段XSS code外加去掃系統進行 10/01 07:09
→ alog: 內部的系統的攻擊 10/01 07:09
→ alog: 不僅cookie沒http only 輸出網頁也沒跳脫 直接機器人就把整 10/01 07:10
→ alog: 段語法都複製1:1新增自己就把自己給搞爆囉 10/01 07:10
→ laject: alog大大太厲害 10/01 07:12
→ alog: 以前有客戶委託一個case特定系統的網頁資料 10/01 07:16
→ alog: 該網頁是用了兩個內嵌網頁且父子元素的伺服器位置都完全不同 10/01 07:17
→ alog: 那時候比較先進技術還沒出來 為了要破解他的系統防護 10/01 07:17
→ alog: 就得將網頁模擬的跟一般瀏覽者一樣 10/01 07:18
→ alog: 那時候用C#配NET下去寫 遇到跨域的問題 系統的元件不給控制 10/01 07:19
→ alog: 多層內嵌下的網頁內容 10/01 07:19
→ alog: 為了破解這到元件的限制就得用更底層的方法來寫 整個部分就 10/01 07:20
→ alog: 變得超級不方便 10/01 07:20
→ alog: 然後有天東西寫完了 很開心的讓他常駐在imac上的windows虛 10/01 07:21
→ alog: 擬機運作 10/01 07:21
→ alog: 結果運作大概幾天後 那神奇的網頁讓我整個整個虛擬機全死掉 10/01 07:22
→ alog: mac也有點不穩 10/01 07:22
→ alog: 後來才發現元兇是該網頁裡有個神奇的flash會發生memory leak 10/01 07:23
→ alog: 系統操作到後面 ie元件會炸掉 程式就死當了 然後吃掉系統一 10/01 07:24
→ alog: 大堆的記憶體 10/01 07:24
→ alog: 之後為了繼續運作 我就乾脆把整個flash元件停用 10/01 07:25
→ alog: 該程式後來運作就正常了 10/01 07:25
→ alog: 經歷該事情之後 我就覺得 要防禦機器人 其實要出怪招XD 10/01 07:26
→ alog: 但是也能體會到 真的有心要破 只是時間早晚的問題 10/01 07:27
推 vn509942: 神奇的flashXDDD 10/01 07:32
推 searcher: jwt 10/01 08:09
推 maxqq: 沒有加密驗證的機制嗎?= =? 10/01 09:45
→ viper9709: 對耶~沒想過這個問題XD 10/01 13:23
※ 編輯: sean72 (172.89.32.145), 10/01/2016 13:42:14
→ dnabossking: 怎麼可能防不了 10/01 13:41
噓 TSW: 怎麼不去ajax板問? 10/01 14:41
推 arenda: 樓上不會就安靜點 軟體版本來就能討論技術問題 10/01 15:21
→ agogoman: 感覺這不是安全性的問題, 是避免機器人查詢的問題. 10/01 15:29
→ agogoman: 如果是公開的API, 建議是用Throttling加驗證機制去做 10/01 15:30
→ agogoman: Throttling也可以做出花樣來, 像是判斷間隔時間 10/01 15:32
→ agogoman: 另外honeypot也是一招 10/01 15:33
→ TSW: arenda 不是因為太難,而是因為太簡單,所以建議去ajax板 10/01 15:54
推 arenda: 如果只給自己網站呼叫 api server放內網不就解了 10/01 15:58
→ TSW: Y 10/01 15:59
→ arenda: 完全破不了而且一行code都不用寫 10/01 16:12
→ TSW: 有一點要注意的是,原PO的 api 可能是給瀏覽器 ajax 用的 10/01 16:14
→ TSW: 還有就是原po好像不是想擋網路爬蟲,單純只是api不想給call 10/01 16:18
→ TSW: 所以...基本上就是隨便簽個token就行...心理安慰罷了 10/01 16:19
→ doranako: 不是有oauth token機制嗎 10/01 16:29
→ TSW: 另一篇有比較具體的問題了,我回在那邊 10/01 16:51
→ heroboy999: 加白名單如何?指定的site才可call api 10/02 00:36
→ CP64: 基本上這種只能靠 cookie + token + referer 下去擋 10/02 02:16
推 Ayukawayen: 要求前段呼叫API時帶一個>N的質數(在前導要求指定N) 10/02 21:40
→ Ayukawayen: 如果第三方接你API 至少可以拿他傳來的值去換成質數幣 10/02 21:41
→ seadog007: 所以說直接爬就好啊 幹嘛解析flash 10/03 15:19
推 magus: csrf_token存seesion比對? 10/03 22:24