2017-01-04 35 views
0

這是一個關於在Slim PHP API中實現JWT的最佳方式的問題 - 我正在尋找有關如何繼續操作的高級/經驗豐富的開發人員的一些指導。在PHP Slim API中查詢字符串JWT JSON Web Token身份驗證

我目前有一個開放的API,用戶可以使用查詢參數(如設備和日期時間範圍)來執行獲取請求以獲取數據。我也有設備發佈數據,沒有身份驗證。我們尚未投入生產,但顯然這很糟糕。

爲了解決這個問題,我一直在尋找在第一種情況下對GET請求實現無狀態身份驗證,特別是使用JWT。我最初考慮將JWT作爲查詢字符串傳遞給用戶,並在用戶登錄後重新設置通過Web前端執行的令牌。但是,我可以看到這對於中間人攻擊是不利的和我的令牌被暴露(如果使用普通的http)。如果我要確保所有獲取/發佈請求都是作爲https請求執行的,這是否足夠安全?

什麼似乎是更安全的方式將令牌通過標題。但從我所瞭解的情況來看,您需要Postman之類的東西才能發送請求,這不是一種真正的選擇,因爲我的用戶只想使用瀏覽器訪問數據。

回答

0

使用http是沒有意義的,https是必須的,否則在用戶和服務器之間的每個人都會看到密碼,甚至可以緩存響應。

令牌可以存儲在瀏覽器將自動包含每個請求的安全Cookie中。 (JWT的Slim中間件具有內置的這個功能)。檢查出許多可用的庫https://jwt.io/

如果您使用cookie,則不需要向查詢字符串添加令牌,我不建議向查詢字符串添加令牌,因爲它們很容易泄露。 (用戶喜歡&粘貼網址複製到對方,這也將泄漏的令牌)

注意:如果你不知道,如果JWT是適合你,請上網:http://cryto.net/~joepie91/blog/2016/06/19/stop-using-jwt-for-sessions-part-2-why-your-solution-doesnt-work/