簡體   English   中英

如何隱藏Rails應用程序用戶的API調用/路由?

[英]How do I hide my API calls / routes from users of my Rails app?

我正在編寫一個對我的API進行一些限制的調用的應用程序。 如果用戶要弄清楚這些url路由是什么以及正確的參數以及如何指定它們,那么他們可以利用它嗎?

例如,如果對某件事投了票,而我只希望用戶能夠投一票,則用戶知道路線:

get '/castvote/' => 'votemanager#castvote'

可能有問題,不是嗎? 找出這些API路由是否容易?

有誰知道消除這種情況可能性的任何方法?

沒有任何方法可以隱藏AJAX調用-如果沒有其他要求,則只需要打開“開發人員工具-網絡”面板,然后簡單地查看發送的內容即可。 如果您只知道如何閱讀,客戶端上的所有內容都是一本開放的書。

而是在服務器端進行驗證:在您的示例中,記錄投票和投票者; 如果該用戶已經記錄了投票,則不要讓他們再次投票。

您的API應該內置有授權。 僅允許具有特定訪問范圍的授權用戶使用您的API。 由Rails社區提供的Checkout Doorkeepercancancan寶石。

正如其他人所說,添加access_tokens / username / password授權是一個不錯的起點。 另外,如果您的應用程序僅應允許每個用戶一票,則應通過服務器上的應用程序邏輯進行驗證

這是一個更廣泛的問題。 無法阻止用戶弄清楚投票的工作方式並嘗試進行投票,但是有不同的方法使投票變得更困難。 我在這里列出了從最小到最有效的一些解決方案:

  1. 在使用Rails的情況下,使用隨機數或工作量證明是通過針對非GET請求的真實性令牌實現的。 這將要求用戶至少在投票之前加載頁面,從而限制腳本重播攻擊
  2. 記錄IP地址或其他可識別信息(即瀏覽器指紋 )。 這將限制單個設備的投票數
  3. 需要注冊。 這是其他答案的建議
  4. 要求第三方登錄(即Facebook,Twitter)
  5. 要求付款才能投票(例如在電視才能秀中)

這些方法都不是完美的,您可以快速提出欺騙其中任何一種的方法。

真正的問題是您的威脅模型是什么,以及您希望它如何使用戶投出虛假票。 根據我的實際經驗,要求第三方登錄將確保大多數投票在典型用例中有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM