javascript - 使用 GoLang 后端反应 JS Rest API 安全性
问题描述
我已经用 GoLang 后端构建了一个 ReactJS 前端。ReactJS 使用 Rest API 从/向 Golang 后端请求/发送所有数据。
我对保护我的 API 请求的最佳方法感到很困惑,这样就不会以编程方式访问我的后端服务器并进行不希望的更改。任何建议将不胜感激。
我一直在探索 JWT 令牌和 CSRF 令牌,但由于我在 API 安全领域缺乏专业知识,我没有去任何地方如何在我的应用程序中准确地实现它。
关于我的申请的一些进一步细节是:
- 前端和后端服务器是分开的。
- 前端服务器使用 Nginx 来提供静态文件。
- 每次打开页面时都应该生成一个新的令牌,并且它的有效期应该不超过 8 分钟。
鉴于我的应用程序的结构,请向我建议保护我的其余 API 的最佳方法。
PS:此页面没有登录或任何其他机制可以确定用户的真实性。
解决方案
我建议将 JWT 用于 API 安全性,因为您的令牌到期时间足够短。
- https://github.com/dgrijalva/jwt-go --> 使用此包在后端生成令牌,并根据您的需要设置到期时间和声明。您的声明也可以基于角色进行精细控制(身份验证层)。
- 将此令牌从登录或作为 API 网关的任何端点发送到您的前端。
- 根据您在前端的意愿将令牌存储在本地存储/https cookie 中。
- 每个需要保护的 API 调用都在标头中发送此令牌,使用上述库在后端验证此令牌。
- 挑战将是在忘记或重置密码/注销时使这些令牌无效。您可以通过将它们保存在 redis/db 中并使用 cron 定期刷新它们来使用黑名单令牌技术。
推荐阅读
- python - 我如何从这个函数中得到最终值?
- powerbi - DAX - 如何基于两个变量创建两个输出
- react-admin - 在编辑表单中嵌入列表/数据网格
- .htaccess - 从 .htaccess 中的 url 中删除文件扩展名
- java - Android 上的 Java 套接字,当我尝试连接到某些 IP 时出现黑屏
- r - 如何在导入期间找到具有不同列类型的文件(然后不导入)?
- nginx - 位置上下文在 NGINX 配置文件中不起作用
- python - 如何使代理工作?Python 请求
- c++ - 如何在 Xcode 之外打开从 Xcode 构建的命令行应用程序?
- python - 将层列表添加到 keras 模型计算图(功能 API)