我已經做了一點Google搜索,但已被信息量淹沒了一點。到目前爲止,我一直在考慮爲每個API調用請求一個有效的md5哈希,但是我意識到劫持這樣一個系統並不是一件困難的事情。你們會友善地向我提供幾個可能幫助我進行搜索的鏈接嗎?謝謝。我需要API安全基礎的資源。有什麼建議麼?
回答
我想爲此問題添加一些澄清信息。 「使用OAuth」的答案是正確的,但也是加載的(鑑於規範很長,不熟悉它的人通常想看到它後自殺)。
我寫了關於如何在這裏設計一個安全的REST API時,從沒有安全到基於HMAC-安全劇情式教程:
這最終是基本所謂的「雙腿OAuth」;由於OAuth最初旨在驗證客戶端應用程序,因此該流程涉及3個部分,涉及身份驗證服務,用戶盯着屏幕以及希望使用客戶端憑據的服務。
雙腿OAuth(以及我在該文章中深入概述的內容)旨在用於服務API彼此之間的身份驗證。例如,這是Amazon Web Services用於所有API調用的方法。
的要點是通過HTTP與任何要求,你必須考慮攻擊向量,其中一些惡意的人在這方面的中間人被記錄和重放或更改您的要求。
例如,您向/ user/create發出名爲'bob'的POST,以及中間人可以使用名稱'bob'向/ user/delete發出POST,這只是令人討厭的。
客戶端和服務器需要某種方式互相信任,唯一可能發生的方式是通過公鑰/私鑰。
你不能僅僅通過公鑰/私鑰來回也不能把你只需提供與私鑰簽名的唯一令牌(這是通常是大多數人做,認爲這使得他們的安全),而這將識別來自真實客戶端的原始請求,但它仍然將評論的論據留給可以改變的意見。
例如,如果我送: /chargeCC用戶=先令& AMT = 100.00 &鍵= kjDSLKjdasdmiUDSkjh
其中關鍵是我的公鑰通過我的私鑰簽名只是一個人在the- middle可以攔截這個調用,然後用「amt」值「10000.00」重新提交給服務器。
關鍵是你必須包括你發送的哈希計算中的所有參數,所以當服務器獲取它時,它會通過重新計算其側邊的相同哈希來重新驗證所有值。
提示:只有客戶端和服務器知道私鑰。
這種驗證方式稱爲「HMAC」。它是驗證請求內容的校驗和。
因爲哈希生成是SO敏感,爲了得到相同的哈希必須做到EXACTLY客戶端和服務器上一樣,還有的所有價值究竟應該如何組合的超級嚴格的規定。
例如,這兩條線提供了非常不同的散列當你嘗試並用SHA-1他們簽名: /chargeCC &用戶=擺錘& AMT = 100 /chargeCC & AMT = 100 &用戶=擺錘
大量的OAuth規範花費了極其詳盡的描述,其中使用了諸如「自然字節排序」和其他非人類可讀垃圾等術語的組合方法。
這很重要,因爲如果你得到的錯誤值的組合,客戶端和服務器不能正確審查對方的請求。
你也不能採取捷徑,只是將所有東西都轉換成一個巨大的字符串,亞馬遜試圖用AWS簽名版本1和它turned out wrong。
我希望所有這一切都有所幫助,如果您遇到困難,請隨時提問。
嗨,您在thebuzzmedia.com上發佈的帖子已關閉 - 我一直在嘗試訪問它的最近2到3天:(您是否介意在另一個平臺上再次分享它?謝謝 – denisazevedo 2016-03-06 16:34:27
對不起,關於該網站的內容試圖遷移它很多次,並且由於它的大小(可能是12年的寫作)而不斷失敗,所以我放棄並殺了它。 – 2016-08-11 17:35:49
- 1. 我需要什麼基礎寶石?
- 2. siebel需要什麼建議?
- 3. 需要自動圖片標記API,有什麼建議嗎?
- 4. Symfony2資產:安裝基礎資源
- 5. 我需要什麼來創建CLI遊戲?任何有用的資源?
- 6. 爲什麼coffeescript需要全局安裝?
- 7. 有什麼建議學習SSIS的資源?
- 8. 什麼是計算機圖形基礎的好資源?
- 9. 基礎知識中的API是什麼?
- 10. 我爲什麼要使用全球資源?
- 11. autocompletetextview並不建議我想要什麼
- 12. 爲什麼我需要最終使用來關閉資源?
- 13. 爲什麼我以往任何時候都需要在資源
- 14. 什麼是基礎*(*)()
- 15. 我需要什麼來保持安全的MySQL數據庫?
- 16. 需要Realtek的rtl8188cus(WiFi USB dongle)數據表。有什麼建議?
- 17. 爲什麼你需要Docker的基礎鏡像?
- 18. 有人可以解釋什麼routes.IgnoreRoute(「{資源} .axd/{* pathInfo}」);需要?
- 19. 爲什麼Web API沒有找到我的資源?
- 20. 我們需要安裝什麼?
- 21. 網絡中有這麼多不同的協議需要什麼?
- 22. 我想貢獻我的第一個開源項目。有什麼建議麼?
- 23. 爲什麼我需要關閉安全驗證?
- 24. 從DirectX切換到SlimDX需要什麼基礎知識?
- 25. 我沒有在godaddy上安裝ioncube。有什麼建議?
- 26. 我們什麼時候需要創建代理服務,什麼時候需要創建Rest Api?
- 27. 爲什麼MAVLink協議不安全?
- 28. 什麼的DLL我需要
- 29. 如何保護對Elastic Beanstalk資源+安全建議的訪問?
- 30. 什麼是eclipse全球ecore資源集
感謝您的幫助。我一定會讀到這個。 – HasFiveVowels 2010-07-03 03:28:41