angular - 在没有登录的情况下使用 spring boot 和 angular 8 保护应用程序的方法是什么?
问题描述
我想保护使用 angular 8 和 spring boot 5 的应用程序,但它是一种自由形式,不需要登录即可访问 UI。我已经使用 CSRF 保护来保护它,但是任何人都可以通过在请求标头中传递 CSRF 令牌来轻松访问 POST 端点,该请求标头可以从 GET 休息端点获得。所以我需要任何好的解决方案来实现安全性,这样除了项目中的角度页面之外,弹簧休息端点不应该是可访问的。谁能帮帮我吗。
解决方案
简而言之,没有。
您可以通过点击处理您的请求的端点来隐藏请求,但是从您开始,请考虑您不能。
让我进一步解释一下:JavaScript 在客户端的浏览器中运行。这意味着客户可以完全访问您的前端代码:如果他愿意,他可以完全分解您的应用程序。
好处是只能在他自己的电脑上破解:客户端不能乱用另一个客户端的浏览器。
另一方面,任何东西都可以访问您的服务器,但您是对其拥有主控制权的人:您应该保护它。
为此,正如您所说,您可以使用 JWT。但是 JWT 是一个身份验证过程,它基本上是一个编码字符串。通过对其进行解码,您可以获得客户端信息,但它们不是从数据库中获取的,而是从令牌本身中获取的。
如果您想保护您的端点,例如,您可以声明只有具有令牌提供的 ID 的用户才能访问您的端点:没有签名就无法伪造令牌。这将保护您的端点并防止其他用户进行修改。
考虑使用与您的后端语言相对应的标签提出另一个问题,这将比要求 Angular 解决方案更有帮助。
推荐阅读
- c++ - 如何找到应该导出的符号
- javascript - 如何将字符串从 Mainactivity.class 传递到 Android 中的 ContentProvider.class
- javascript - 反应计算器:检查字符串中是否存在任何值
- c++ - 2个线程是否可以同时锁定一个互斥锁(使用互斥锁包装器)?
- ios - 快速心率变异性结果从 ms 转换为 double
- android - 如何使用 latlngbounds 限制谷歌地图并仍然获取用户位置?
- angular - 带有远程url返回值的角度4打开对话框
- python - python中的多个'In'运算符
- python-3.x - 如何评价(刮掉的)句子的质量?
- android - DocumentFile.renameTo 通过图库共享文件时使用旧文件名