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

看板Soft_Job作者 (寂靜的生存者)時間7年前 (2016/10/01 11:53), 編輯推噓5(5035)
留言40則, 9人參與, 最新討論串5/9 (看更多)
比較簡單是用圖形驗證碼才能查資料吧 圖形驗證碼通過後給一組token可以查一次 這樣就可以防大量查詢。 驗證的話你可以用google驗證 他現在驗證行為很困難 例如幾間房子等。 你覺得現在機器人有這麼聰明嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.229.198 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1475294038.A.4FC.html

10/01 12:04, , 1F
圖片驗證可以使用請選其中五間潛力公司的logo。
10/01 12:04, 1F

10/01 12:19, , 2F
google搜索也在堵機器人我剛剛也被google圖形驗證
10/01 12:19, 2F

10/01 12:53, , 3F
我書讀得少,想問一下呼叫API怎麼做圖形驗證?
10/01 12:53, 3F

10/01 13:17, , 4F
這不難,你一個API吐出hash跟一個base64編碼的圖片,用戶
10/01 13:17, 4F

10/01 13:17, , 5F
端必須把base64編碼的圖片轉成真是圖形之後
10/01 13:17, 5F

10/01 13:18, , 6F
在用原hash code+圖片內文送一次api拿到這個api token
10/01 13:18, 6F

10/01 13:26, , 7F
這個方法好
10/01 13:26, 7F

10/01 13:28, , 8F
你們是不是把呼叫API和使用者操作搞混了?
10/01 13:28, 8F

10/01 13:29, , 9F
聽起來像是兩個API Call阿,第二個API call就是解法,這用c
10/01 13:29, 9F

10/01 13:29, , 10F
srf 不就可以解決了嗎?
10/01 13:29, 10F

10/01 13:30, , 11F
這是一個方式。但是有兩個問題: 從使用者角度,我希望做到
10/01 13:30, 11F

10/01 13:31, , 12F
除非"必要",不然不登入,減少擾民的狀況,讓大家會來我的
10/01 13:31, 12F

10/01 13:31, , 13F
網站。
10/01 13:31, 13F

10/01 13:33, , 14F
而且別人架設的前端,應該也可以模擬我自己的前端,
10/01 13:33, 14F

10/01 13:34, , 15F
進而取得token之類的,然後進行api存取吧?
10/01 13:34, 15F

10/01 13:35, , 16F
只要是public API都會有這個問題,除非你定義何謂「必要」
10/01 13:35, 16F

10/01 13:35, , 17F
,然後做在你的API param裡面。
10/01 13:35, 17F

10/01 13:39, , 18F
"必要": 例如留言,想分享到fb等等
10/01 13:39, 18F

10/01 13:40, , 19F
有些網站強迫使用者一定要登入的,我都覺得好討厭
10/01 13:40, 19F

10/01 13:43, , 20F
如果你要公開,但又要有限制,在Header裡放token是個解法,
10/01 13:43, 20F

10/01 13:43, , 21F
token設計是門學問,有很多best practice 可以研究一下。
10/01 13:43, 21F

10/01 13:45, , 22F
你那個不叫「必要(滿足什麼條件才能呼叫API)」,那叫「
10/01 13:45, 22F

10/01 13:45, , 23F
需求(API提供什麼功能)」
10/01 13:45, 23F

10/01 13:51, , 24F
我的意思是 除非萬不得已 不然我不希望使用者圖形驗證
10/01 13:51, 24F

10/01 13:51, , 25F
或是使用者登入 等等的
10/01 13:51, 25F

10/01 13:52, , 26F
我舉個例子好了,如果我有一支API是add(int a, int b)
10/01 13:52, 26F

10/01 13:53, , 27F
這時候呼叫Api的人怎麼做圖形驗證?
10/01 13:53, 27F

10/01 13:54, , 28F
如果可以圖形驗證,那已經有UI了不是?有介面的情況跟API c
10/01 13:54, 28F

10/01 13:54, , 29F
all不同阿?
10/01 13:54, 29F

10/01 13:59, , 30F
完整的方法是綁token後分析呼叫api的行為,把像機器人
10/01 13:59, 30F

10/01 13:59, , 31F
的token ban掉。
10/01 13:59, 31F

10/01 14:02, , 32F
你要的是認清敵我關係,讓有token的人做事,沒token的人食
10/01 14:02, 32F

10/01 14:02, , 33F
屎。token怎麼做才不會被仿造是API developer 的工作。
10/01 14:02, 33F

10/01 14:04, , 34F
圖形驗證,登入可以視為token來源,通過了才有token,有tok
10/01 14:04, 34F

10/01 14:04, , 35F
en才能做API call.
10/01 14:04, 35F

10/01 14:05, , 36F
而不是在API call當下做圖形驗證或登入,這是ui flow。
10/01 14:05, 36F

10/01 14:05, , 37F
簡單說如果有token就是200,沒有就是401。
10/01 14:05, 37F

10/01 16:33, , 38F
不想圖形驗證的話就用reCAPTCHA?
10/01 16:33, 38F

10/01 16:36, , 39F
講到這邊已經快變成 UI/UX 問題了
10/01 16:36, 39F

10/02 14:24, , 40F
機器人都可以下棋了 還不聰明嗎
10/02 14:24, 40F
文章代碼(AID): #1NxpDMJy (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1NxpDMJy (Soft_Job)