我一直在閱讀REST,因此有很多關于REST的問題,以及許多其他網站和博客。盡管我從未見過這個特定問題的答案...由于某種原因,我無法將這個想法籠罩在心...如果我正在構建RESTful API,并且想要保護它的安全,那么我所看到的方法之一就是使用安全令牌。當我使用其他API時,會有一個令牌和一個共享的秘密……很有意義。我不明白的是,正在通過javascript(XHR / Ajax)發出對REST服務操作的請求,這是為了防止某人通過諸如FireBug(或瀏覽器中的“查看源代碼”)之類的簡單內容來嗅探到這一點,以及復制API密鑰,然后假冒使用密鑰和秘密的那個人?
3 回答

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
api secret沒有顯式傳遞,secret用于生成當前請求的標志,在服務器端,服務器按照相同的過程生成標志,如果兩個標志匹配,則請求成功通過身份驗證-因此僅簽名是通過請求傳遞的,而不是秘密。

開滿天機
TA貢獻1786條經驗 獲得超13個贊
這個問題的答案是可以接受的,但為了澄清起見,共享秘密身份驗證的工作方式如下:
客戶端具有公共密鑰,可以與任何人共享,沒關系,因此您可以將其嵌入javascript。這用于標識服務器上的用戶。
服務器具有密鑰,此密鑰必須受到保護。因此,共享密鑰身份驗證要求您可以保護您的秘密密鑰。因此,無法直接連接到其他服務的公共javascript客戶端,因為您需要服務器中間人來保護機密。
服務器使用某種算法來簽署請求,該算法包括秘密密鑰(秘密密鑰有點像鹽),最好是時間戳,然后將請求發送到服務。時間戳是為了防止“重播”攻擊。請求的簽名僅在n秒左右有效。您可以通過獲取時間戳頭來檢查服務器上的內容,該頭應包含簽名中包含的時間戳值。如果該時間戳記過期,則請求失敗。
該服務獲取的請求不僅包含簽名,而且還包含以純文本簽名的所有字段。
然后,該服務使用共享密鑰以相同的方式對請求進行簽名,并比較簽名。
- 3 回答
- 0 關注
- 607 瀏覽
相關問題推薦
添加回答
舉報
0/150
提交
取消