2011-05-10 82 views
1

我想問一下,如果有可能,請阻止BAD用戶對我的RESTful Web API執行很多查詢。這是我的情況:是否可以阻止RESTful API中的批量查詢?

我的客戶端應用程序向Web API發出查詢。該查詢由產品的EAN代碼組成。服務器回覆產品參數和其他產品信息。現在,我試圖阻止的是,我的競爭對手(BAD用戶)竊取我手動收集的寶貴數據。問題是,BAD用戶擁有所有EAN代碼的列表,並且可以執行自動查詢以從我的API獲取所有數據。

+0

順便說一句,你的問題標題有點誤導。你不是試圖阻止批量查詢,而是試圖阻止某些客戶端進行*任何查詢,對嗎? – 2011-05-10 18:46:52

回答

3

調整它們使得它們只能每個ip /每分鐘請求x次......可能通過最終用戶必須註冊的auth令牌或API密鑰。或者如果你知道他們,你可以將他們的知識產權全部黑名單。

+0

嗯,我當然想過這個,但那不是解決方案。可以說有幾千件物品。如果我使用油門,它會讓BAD用戶更多的時間,但仍然會獲得所有的數據。不是在幾分鐘內,但讓我們說幾天。並且將IP列入黑名單也是一個問題,因爲他們肯定會使用許多不同的IP地址:-( – Frodik 2011-05-10 18:46:32

+0

那麼就像我添加的那樣,您始終可以使用用戶必須註冊的AUTH令牌或API密鑰。這樣您就可以跟蹤並製作確定只有信任的用戶才能獲得密鑰 – 2011-05-10 18:47:52

+0

是的,我有條件,該用戶需要註冊,但是他們是以電子郵件地址爲基礎註冊的,所以對於BAD用戶來說,註冊也沒有問題。 – Frodik 2011-05-10 18:49:35

1

讓API用戶自己註冊並向所有人分發API密鑰。如果您願意,密鑰可以是網址的一部分。這樣,您就可以跟蹤哪些用戶正在做什麼,並且如果您願意的話還有使用限制。

0

當然,您需要將安全性應用於您的API。不要允許匿名訪問您的資源或API,並確保只有您的「好」客戶纔有權調用它們。在傳輸層使用HTTPS基本身份驗證和SSL加密可以解決問題,或者讓他們指定祕密客戶端密鑰作爲請求的一部分。