看板 Web_Design 關於我們 聯絡資訊
各位先進好, 小弟有個問題想請教一下 目前正在製作一個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
mmis1000: 設定一個針對某使用者的暫時性token驗證阿,登入時給他 05/15 16:04
mmis1000: 這樣別人沒token也不能拿到資料,或是網址本身就是token 05/15 16:05
mmis1000: 只要長度稍微長一點,每次登入都換,根本不可能猜到 05/15 16:05
Ayukawayen: 簡單一點就POST傳參數 走HTTPS 05/15 16:34
mmis1000: jsonp哪來POST阿...順帶一提,plurk的realtime api 05/15 16:39
Ayukawayen: 啊 你是擔心使用者改參數 那就放token在參數裡 05/15 16:39
mmis1000: 就是生成很長一次性網址的 05/15 16:40
就在我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
mmis1000: token這種東西可不能在client產生阿... 05/15 20:54
ChenCH1986: client 呼叫server api產生 05/16 09:53