保护 Node.js RESTful API
Securing Node.js RESTful APIs
我是 Node.js 的新手,只想用它为我在 Unity3D 中的游戏创建 RESTful API。就在游戏结束时,如果 he/she 想要分享,我想从玩家那里获得一些信息,例如姓名和 phone 号码等。我知道如何实现这个服务器,但我的问题是安全性。我在 Node.js 中搜索了很多关于安全性的内容,但我还没有弄明白。在我的搜索中,我看到有一个 npm 包,它是 JWT 并想出了如何使用它。据我所知,我们向服务器发送请求并作为响应 returns 一个不记名令牌,我们可以用它设置我们的 header 并使用 GET、POST 或其他方法。我的问题是任何人都可以向 URL 发送请求并获取该令牌并做其他事情(我想我犯了一个错误)。那么这类服务器的安全解决方案是什么?
嗯,有多种身份验证策略(基本、oauth、令牌、cookie)。既然你已经选择了JWT策略,我就尽量解释一下。
- 用户注册(电子邮件、密码、phone、姓名等...)
- 您的服务器 returns 一个 201 和一个为该用户签名的 JWT 令牌
jwt.sign({ id: user.id, role: user.role }, 'secret', { expiresIn: 60 * 60})
- 然后您可以向您的路由添加一个中间件,以验证令牌是否在身份验证中 header 以及令牌是否有效。
jwt.verify(token, 'your secret')
- 由于您在 header 中使用令牌,因此您应该使用 HTTPS 来加密您的 http 请求
- 您还需要一个接收 ID 和密码并为该用户生成新令牌的登录端点,因为令牌可能会过期。
通常我使用这个包:https://github.com/auth0/node-jsonwebtoken你还可以在其中设置加密算法和更多选项。
另一个包含图片的解释:https://whosebug.com/a/45978644/4120554
我是 Node.js 的新手,只想用它为我在 Unity3D 中的游戏创建 RESTful API。就在游戏结束时,如果 he/she 想要分享,我想从玩家那里获得一些信息,例如姓名和 phone 号码等。我知道如何实现这个服务器,但我的问题是安全性。我在 Node.js 中搜索了很多关于安全性的内容,但我还没有弄明白。在我的搜索中,我看到有一个 npm 包,它是 JWT 并想出了如何使用它。据我所知,我们向服务器发送请求并作为响应 returns 一个不记名令牌,我们可以用它设置我们的 header 并使用 GET、POST 或其他方法。我的问题是任何人都可以向 URL 发送请求并获取该令牌并做其他事情(我想我犯了一个错误)。那么这类服务器的安全解决方案是什么?
嗯,有多种身份验证策略(基本、oauth、令牌、cookie)。既然你已经选择了JWT策略,我就尽量解释一下。
- 用户注册(电子邮件、密码、phone、姓名等...)
- 您的服务器 returns 一个 201 和一个为该用户签名的 JWT 令牌
jwt.sign({ id: user.id, role: user.role }, 'secret', { expiresIn: 60 * 60})
- 然后您可以向您的路由添加一个中间件,以验证令牌是否在身份验证中 header 以及令牌是否有效。
jwt.verify(token, 'your secret')
- 由于您在 header 中使用令牌,因此您应该使用 HTTPS 来加密您的 http 请求
- 您还需要一个接收 ID 和密码并为该用户生成新令牌的登录端点,因为令牌可能会过期。
通常我使用这个包:https://github.com/auth0/node-jsonwebtoken你还可以在其中设置加密算法和更多选项。
另一个包含图片的解释:https://whosebug.com/a/45978644/4120554