我的应用程序(主要是用主干编写的客户端代码)与Node.js服务器接口。我的服务器的唯一目的是为我的骨干应用程序提供API端点。
GET
请求非常安全,攻击者在这里做的不多。但我确实有几个帖子,并提出了要求。其中一个PUT
请求负责更新特定用户的投票计数。
app.put('/api/vote`, function(req, res) {
// POST form data from the client
var winningPerson = req.body.winner; // userID
var losingPerson = req.body.loser; // userID
}
我注意到,有些人只是通过JS控制台或某种REST控制台向某个特定用户发送PUT
请求,绕过了用户界面强制执行的应用程序的意图。如果您按预期使用此应用程序,它将永远不允许您连续多次为同一个人投票,更不用说数据库中的任意用户(假设您知道他们的用户id)。
但是的,是的,我知道:“不要相信客户”。那么,我该如何解决上述问题呢?在这里,某种IP地址检查会帮助防止在3-5分钟内进行多次投票吗?如何阻止从控制台访问我的API,这样用户就不能任意地为他们想要的投票,而只能用鼠标单击图像,或者至少通过控制台为这两个人而投票,而不是任何任意的人?
发布于 2013-06-21 06:25:55
答案在您的服务器中。它不应该允许用户在指定的时间范围内进行多次投票。这是一种业务规则,您只能通过服务器强制执行,因为它在您的控制之下。
用户界面中的任何强制执行都是好的和有利可图的,但并不是防弹的。您一定要检查服务器才能确定。有很多更多地涉及服务器的业务逻辑比
我的服务器的唯一目的是为我的骨干应用程序提供API端点。
不要试图控制超出您控制范围的东西--应用程序的客户端。有些人投票次数更多,因为你(你的API)允许他们这样做。一旦你的服务器回复“5分钟后试一试,伙计。”他们会停止这样做,否则至少不会有什么害处。
https://stackoverflow.com/questions/17228570
复制相似问题