2011-05-04 182 views
1

我並不確定如何制定問題,但我認爲這更多的是建議請求,而不是本身的問題。「隱藏」JavaScript HTTP請求的最佳做法?

我們正在構建一項HTML5服務,用戶可以通過該服務獲得獎勵(用社交遊戲術語獎勵)以完成一系列優惠。這些優惠大部分都是視頻廣告收看。我們已經有一個基於Flash的實現,但對於HTML5,我遇到了更多關於如何使請求調用來驗證合法觀看的視頻廣告的問題。在Flash界面上,我們有一系列SWF所做的HTTP請求,其中一些在視頻播放開始時,在中間和結束時,這些請求中的每一個都相互關聯,這意味着一個請求的響應是下一個請求需要,等等。「隱藏」這個「算法」的大部分邏輯都隱藏在SWF二進制文件中,並且它非常符合這個目的。

但是,對於HTML5,我們必須依賴世界可見的JavaScript,並且「隱藏」邏輯是開放的。所以,我想這是一個關於如何處理這些案例的建議,以便技術人員不能(很容易)訪問它並利用該服務以程序化的方式獲得貸記。對JavaScript進行模糊處理似乎有些幫助,但不能完全保護。

當然還有在後臺一些額外的安全性(如頻率上限,每個用戶的封蓋,等等),但由於我們的封蓋清除每一天,一個技術人員仍然可以找到一種方式來獲得所有優惠的信貸,即使沒有完成它們。

回答

1

聽起來好像您要確保您的服務器可以區分由於用戶與您的用戶界面進行交互而發生的請求,而您所採用的方式並非如此。

在這樣的系統上有很多攻擊點。

  1. 檢查JavaScript以查找事件處理程序並通過Firebug或其他工具調用它們。
  2. 檢查代碼中的所有密鑰,並在不涉及瀏覽器的情況下生成HTTP請求。
  3. 在瀏覽器中運行代碼以編程方式生成事件。
  4. 使用第三方工具來檢測瀏覽器以產生點擊。

如果您已經對儀表攻擊(3和4)有合理的解決方案,那麼您可以查看Is there any way to hide javascript functions from end user?獲取祕密進入客戶端以允許您簽署請求的方法。除此之外,混淆是阻止未決定的攻擊者遭受任何利用的唯一(並且不完美)方式,限速和UI事件記錄可能是阻止確定的攻擊者受益於大規模欺詐的最佳選擇。

+1

我會加5.檢查http流量,並且一旦你知道它們的樣子,就僞造http請求。 – theazureshadow 2011-05-04 22:50:11

+0

@theazureshadow,好點。 – 2011-05-04 22:51:50

0

您將無法阻止確定的攻擊者(即使使用SWF,儘管它更加模糊)。最好的辦法是確保:

  1. 規避你的措施是在工作方面是昂貴的,可能通過使用計算昂貴的加密算法,使他們不能只設置一組腳本來做到這一點的。
  2. 回報是最小的(用戶上限是如何減少回報的一個例子;如果你給出積分,那沒問題;如果你郵寄了20美元的賬單,那你就不幸運了)

成本效益。