node.js - 如何保护 Node js API 的安全

标签 node.js api security

使用以下命令创建 Node JS API 应用程序: https://github.com/spoonx/wetland

为了确保该 API 的安全,我曾想过为每个用户分配一个 API key ,但我脑海中一直浮现一个问题,即有时恶意用户可能会获取其他用户的 API key ,并且他可以使用该 API。

所以我的问题是如何保护我的 API 免受所有这些黑客攻击?

最佳答案

如果需要,您可以通过多种方式锁定您的 API,请记住您添加的安全性越高,通常最终用户使用您的 API 就越困难。

IP地址锁定
您可以为每个用户分配一个 IP 地址并将其存储在数据库中。在您的身份验证中间件中,一旦用户使用其 API key 成功进行身份验证,您将使用 request.connection.remoteAddress 检查他们的请求 IP。如果 IP 匹配,则允许连接,否则拒绝连接。

JSON Web token
您可以使用的第二件事是 JWT,它是无状态对象,可用于对用户进行身份验证。这是一种更安全的 API 实现方式。您可以阅读here

使用 HTTPS
使用 HTTPS 将确保没有人能够嗅探 ( MiTM ) api key 以及随请求发送的任何其他信息。使用 HTTPS 将为您的应用添加额外的安全层,这将使恶意行为者更难访问您的 api key 。

请记住,所有这些解决方案都将为您的 token /API key 提供更高的安全性,但如果您的一位用户公开了他们的 API key ,那么您将需要撤销该 API key 并生成一个新的 key ,或者完全删除该 key 。
因此,我建议将 API key 与用户一起存储在数据库中,以便您可以轻松地撤销或重新生成特定用户的 api key 。您还应该保留 api 请求的日志,以便在未实现 IP 地址锁定的情况下检测异常流量或来自未知来源的流量。

关于node.js - 如何保护 Node js API 的安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48436880/

相关文章:

node.js - npm install 不下载最新的包

javascript - 如何添加类型以在 Node v12 中使用 Intl.ListFormat

c++ Mysql C API 连接问题

security - AWS 安全组设置

python - 如何从 Python 为内置 WSGI 服务器启用 SSL?

javascript - 存钱为整数

node.js - 如何使用 Jade 文件中的谷歌分析

node.js - 带有外部 OAuth 的 Rest API

c++ - 使用 Xcode 调试 Maya 插件

java - 为什么即使我们提供空密码 JKS 加载也能正常工作?