我正在使用基於令牌的身份驗證訪問我爲我的網站設計的一些原始Web API。在登錄時,用戶名和密碼將發佈到登錄API,並且它會生成一個具有唯一密鑰的令牌,並且密鑰將存儲在數據庫中。在隨後的每次調用中,令牌都隨請求一起發送,並在服務器上使用密鑰進行驗證。保護基於令牌的身份驗證系統的令牌
我正在使用Web應用程序來使用此API服務並向用戶提供前端。 Web應用程序使用HTML/Bootstrap/JQuery設計,後端使用php編寫。
我已成功測試我的應用程序和基於令牌的身份驗證工作。但是,我有一個問題。我發現用戶ID和令牌直接顯示,只在瀏覽器的地址欄上使用url編碼。現在
http://hasconpanel.ckoysolutions.com/hasconpanel.php?inputs={%20%22username%22%20:%20%22Debopam%20Parua%22%20,%20%22uid%22%20:%20%2220170520193421DP%22%20,%20%22token%22%20:%20%22Sa2pHyooWPoI79vfvJzLlw7UO%252B2p5hOpBttkEq7LQ%252BjAGm9XEmxfhLAcnJoLbqrsXCp75%252BG1M7nEUoCgsDVbIQ%253D%253D%22%20,%20%22list_of_devices%22%20:%20[{%22device_code%22:%22b8:27:eb:f1:b3:0f%22,%22device_name%22:%22First-Pi%22}]%20}
,如果該地址被複制,或者假設瀏覽器是由恢復先前的會議,不管是誰試圖訪問它,他們得到的條目。特別是在公共計算機中心的情況下,如果任何人使用他們的憑證訪問我的Web應用程序,並且在殺死瀏覽器之前忘記註銷,令牌系統似乎失敗了。無論如何保護令牌像加密它?或者某些情況下,應用程序在瀏覽器/瀏覽器選項卡關閉的情況下不存儲參數,或者至少不會將其顯示在地址欄中?我曾想過在每次請求時都會創建一個新的令牌,但它會大幅降低系統速度,所以我想避免它。
請建議一些方法來解決這個問題。
在此先感謝。
編輯: 解釋系統是如何工作的,現在:
的API系統託管在一個共享服務器的主域名,並應用在一個子域主持。主域還承載了幾個從家中安裝的幾個樹莓派中調用的web服務。
這是它是如何工作的,登錄是從主網站進行的,並且在成功登錄後,將通過帶有用戶ID,令牌和用戶工作設備列表的get調用來調用Web應用程序。提供檢查是爲了防止在沒有這三個參數的情況下訪問應用程序頁面。在新加載時,用戶可以從下拉菜單中選擇設備。現在,這些工作設備中的每一個都可以運行三個獨立的系統。因此,在選擇設備時,應用程序會再次發出獲取呼叫,並將選定設備作爲參數與前三個參數一起添加。這會在地址欄上顯示令牌和uid。
您可以使用發佈API請求的請求。 –
只要他通過HTTP –
運行,發佈不會保護他,現在可以獲得免費的SSL證書,所以確實沒有理由不使用https。如果用戶需要使用電子郵件和密碼進行註冊,則需要使用HTTPS:https://letsencrypt.org/ –