我正在编写一个应用程序,它会对我的API进行一些限制。如果用户要弄清楚这些url路由是什么以及正确的参数以及如何指定它们,那么他们可以正确利用它吗?
例如,如果对某事投票,我只希望用户能够投一票,则用户知道该路线:
get '/castvote/' => 'votemanager#castvote'
可能有问题,不是吗?弄清楚这些API路线是否容易?
有没有人知道如何消除这种情况发生的可能性?
答案 0 :(得分:1)
无法隐藏AJAX调用 - 如果没有别的,只需打开开发人员工具 - 网络面板,只需查看发送的内容即可。如果您只是知道如何阅读,那么客户端上的所有内容都是一本开放的书。
相反,在服务器端进行验证:在您的示例中,记录投票和投射它们的用户;如果该用户已经记录了投票,请不要让他们再次进行投票。
答案 1 :(得分:0)
您的API应该内置授权。只允许具有特定访问范围的授权用户使用您的API。通过rails社区提供的结帐Doorkeeper
和cancancan
宝石。
答案 2 :(得分:0)
正如其他人所说,添加access_tokens / username / password授权是一个很好的起点。此外,如果您的应用程序应该只允许每个用户一票,那么这应该由服务器上的应用程序逻辑验证
答案 3 :(得分:0)
这是一个更广泛的问题。没有办法阻止用户弄清楚投票如何运作并尝试游戏但是有不同的技术可以让它变得更难。我在这里列出了从最不有效到最有效的一些解决方案:
这些方法都不是完美的,您可以快速找到欺骗任何方法的方法。
真正的问题是你的威胁模型以及你希望它为用户投下虚假投票的难度。根据我需要第三方登录的实际经验,将确保大多数投票在典型用例中有效。