java 基本用户名和密码检查,而不是Spring安全

1aaf6o9v  于 2023-03-06  发布在  Java
关注(0)|答案(2)|浏览(130)

我们可以通过以下方式对用户进行身份验证:(1).获取用户名和密码,并直接与数据库进行检查。(2).使用Spring Security(将获取用户名和密码)
如果我的应用程序不需要对某些端点进行授权,那么在这种情况下,点(1)将非常有用,因为它不需要处理代码。
我的理解是正确的吗?除了授权的好处外,还有什么其他的好处吗?在第(1)点中,这仍然是验证用户身份的正确方法吗?

waxmsbnn

waxmsbnn1#

spring框架中的spring-security模块的全部原因是有一些专门的框架在安全层上,这样一个普通的公司或开发人员建立一些应用程序不必总是考虑他们如何实现安全性,以及他们的安全层是否有一些漏洞。
在你的例子中,我们可以说spring security也有加密密码的能力,这样实际的密码就不会存储在数据库中。所以,如果有人访问数据库,凭据不会自动泄露。
另一种情况是spring security中的principal对象,在验证后隐藏了密码,所以你可以传输这个对象来查看登录用户的信息,但是如果有中间人攻击,试图解释对象的状态,那么凭证就不容易被泄露。
spring-security模块中包含了更多的最佳实践,以便为应用程序提供额外的安全性并防止攻击。
因此,总结一下,使用spring-security和使用您自己的身份验证机制,在登录中提供的最基本的凭据概念上并与数据库进行比较是相同的,但实现会有很大不同,因为spring-security模块提供了更多的东西来阻止攻击者,而不仅仅是实现这个概念。

np8igboo

np8igboo2#

所以基本上你会问除了认证和授权,spring security还提供了哪些安全功能?

  1. CSRF support
  2. CORS支持
  3. HTTP防火墙
  4. Security HTTP Response Headers
    1.用于密码存储的密码编码器
    另外,即使你的应用程序现在没有任何基于角色或权限授权的要求,它仍然需要检查请求是否来自已认证的用户,并只允许已认证的用户访问。否则,如果每个人都被允许访问应用程序,那么让用户有密码进行认证是没有意义的。这种检查也是一种授权。
    因此,一旦应用程序需要身份验证,下一个无法避免的自然需求就是授权,至少要检查用户是经过身份验证的用户还是匿名用户。

相关问题