![](/img/trans.png)
[英]From a high-level, how do I allow non-logged in users to do certain things in my app - Rails 3
[英]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 Doorkeeper
和cancancan
寶石。
正如其他人所說,添加access_tokens / username / password授權是一個不錯的起點。 另外,如果您的應用程序僅應允許每個用戶一票,則應通過服務器上的應用程序邏輯進行驗證
這是一個更廣泛的問題。 無法阻止用戶弄清楚投票的工作方式並嘗試進行投票,但是有不同的方法使投票變得更困難。 我在這里列出了從最小到最有效的一些解決方案:
這些方法都不是完美的,您可以快速提出欺騙其中任何一種的方法。
真正的問題是您的威脅模型是什么,以及您希望它如何使用戶投出虛假票。 根據我的實際經驗,要求第三方登錄將確保大多數投票在典型用例中有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.