有没有一种方法可以防止API路由受到发出请求的应用程序之外的经过身份验证的用户的攻击?

时间:2019-04-25 04:54:01

标签: node.js angular rest express

我正在制作一个具有角度的应用程序,该应用程序让用户登录,取得进步,然后为他们授予等级/经验值。我正在使用nodejs / express API,我希望能够通过我的应用进行调用以授予他们exp。我使用的是JWT和带有私钥的服务器签名来验证请求,但意识到用户可以拉自己的令牌并给自己体验。我的问题是,无论如何,这是否可以保护我的路线,或者那是设计的根本缺陷?

1 个答案:

答案 0 :(得分:0)

我不认为您可以使用JWT专门执行此操作。正如评论者已经说过的那样,JWT仅提供给定令牌的访问权限。就像您自己说的那样,只需读取流量并发送他们自己的请求以增加他们的经验就足够了。

虽然基本的身份验证/授权机制无法解决此问题,但是您可以在请求有效负载本身之内以其他方式处理它。

您可以对有效负载进行加密和/或签名-鉴于该应用需要知道或接收要使用的密钥,通过足够的调查,有可能最终找到并复制该密钥。但这是另一个必须经过复制的步骤。

您可以采用其他检查和措施-将[exp增加]的请求分为两个步骤;服务器用一些要解决的次要任务响应初始请求,然后将该任务附加到后续请求中。假设任务正确完成,您可以合理地确定它来自您的应用程序,因为您的应用程序知道如何解决发出的问题(或者某人在分解整个应用程序之外缺乏嗜好严重 )。

您可以限制用户可以合理实现的exp数量。如果您知道人们最多应该能够每分钟/小时/天/天等获得xyz exp,那么通过监视exp的增长,您可以标记和/或阻止超过这一点的其他收益。