[問題] API安全性

看板Web_Design作者 (Chen,C.H.)時間10年前 (2015/05/15 14:56), 10年前編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
各位先進好, 小弟有個問題想請教一下 目前正在製作一個API,該API是用PHP所撰寫的 使用者可以透過該API去撈取資料 但現在問題了,由於我是使用ajax 搭配jsonp格式來跨域傳遞 我擔心是用GET方式傳送 GET方式傳送使用者只要檢視原始碼 就可以知道我塞的參數是甚麼,傳送的資料是甚麼 會不會直接在API的網址列後面更改個參數就可以查到要查的資料? 因此想詢問有沒有甚麼做法是安全的 至少不要讓使用者改個使用者ID就可以撈出其他人資料 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.76.94.27 ※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1431673010.A.630.html

05/15 16:04, , 1F
設定一個針對某使用者的暫時性token驗證阿,登入時給他
05/15 16:04, 1F

05/15 16:05, , 2F
這樣別人沒token也不能拿到資料,或是網址本身就是token
05/15 16:05, 2F

05/15 16:05, , 3F
只要長度稍微長一點,每次登入都換,根本不可能猜到
05/15 16:05, 3F

05/15 16:34, , 4F
簡單一點就POST傳參數 走HTTPS
05/15 16:34, 4F

05/15 16:39, , 5F
jsonp哪來POST阿...順帶一提,plurk的realtime api
05/15 16:39, 5F

05/15 16:39, , 6F
啊 你是擔心使用者改參數 那就放token在參數裡
05/15 16:39, 6F

05/15 16:40, , 7F
就是生成很長一次性網址的
05/15 16:40, 7F
就在我po完文章之後, 想到了與一樓大大一樣的辦法 就是我再做一個產生token的api(稱為a), 是透過md5去產生 主要是要使用不可逆的加密函數, 雖然md5據說已經可逆了 但我的查詢資料並不是那麼有價值去破解, 只是不想讓使用者輕易地取得他人資料 接著在我真正要呼叫的api(稱為b)裡面一樣去產生一個md5 b api產生md5規則與產生a api內容一樣 產生的規則主要是用時間, 到秒為單位, 另外再隨意加上一些字串搭配 如此一來就可以比對是否是在當下同時去得到相同的密碼 假如相同, 表示使用者是透過網站程式碼傳遞 假使不同, 表示使用者拿過期的密碼來傳遞資料, 因此撈不出任何東西 以上做法應該是正確的, 在此也提供給大一個參考的做法 ※ 編輯: ChenCH1986 (42.76.94.27), 05/15/2015 16:48:59

05/15 20:54, , 8F
token這種東西可不能在client產生阿...
05/15 20:54, 8F

05/16 09:53, , 9F
client 呼叫server api產生
05/16 09:53, 9F
文章代碼(AID): #1LLPYoOm (Web_Design)