Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spring security restful接口-改进json请求,以免传递明文密码_Spring_Spring Mvc_Spring Security - Fatal编程技术网

spring security restful接口-改进json请求,以免传递明文密码

spring security restful接口-改进json请求,以免传递明文密码,spring,spring-mvc,spring-security,Spring,Spring Mvc,Spring Security,我有一个SpringMVC3.0WebApp,它使用SpringSecurity。我已经在spring安全登录服务中实现了一个基本的json服务,但就我而言,这还不够确定 在我的json请求中,我正在以纯文本形式传递以下类型 {"j_username":"myPlainTextUsername", "j_password":"myPlainTextPassword" , "j_store":"1"} 我的所有密码都使用直接的md5加密存储在数据库中。我的应用程序使用以下spring配置 <

我有一个SpringMVC3.0WebApp,它使用SpringSecurity。我已经在spring安全登录服务中实现了一个基本的json服务,但就我而言,这还不够确定

在我的json请求中,我正在以纯文本形式传递以下类型

{"j_username":"myPlainTextUsername", "j_password":"myPlainTextPassword" , "j_store":"1"}
我的所有密码都使用直接的md5加密存储在数据库中。我的应用程序使用以下spring配置

<beans:bean id="userDetailsDao" 
    class="com.mycompany.reporting.dao.UserDetailsDaoImpl"/>

<beans:bean id="encoder" 
    class="org.springframework.security.authentication.encoding.Md5PasswordEncoder"/>

<beans:bean id="authenticationProvider" 
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider"
    p:userDetailsService-ref="userDetailsDao"
    p:passwordEncoder-ref="encoder" />

<authentication-manager alias="authenticationManager" erase-credentials="false">
    <authentication-provider ref="authenticationProvider"></authentication-provider>
</authentication-manager>
我不想把明文密码放在json请求中,而是想尝试通过包含一个md5哈希值为

用户名是盐 网址是盐 密码 然后我希望能够解密,将salt与密码分开,然后进行身份验证。我知道SpringSecurity允许salt,但我认为只有当密码与salt一起存储在db中时,它才有用

有人能帮我提出一些建议吗?春天有什么能帮我做我想做的事吗


非常感谢,md5不是可逆的。因此,如果您得到密码的md5散列,则只能将其与存储在数据库中的md5散列进行比较。只有当两个哈希使用相同的盐时,比较才会有意义

如果这是一个选项,那么在登录页面上使用https并继续以明文形式发送密码会更简单——但要通过https加密通道


如果没有,,您必须将密码存储为纯文本或可逆编码,这种编码看起来更好,但不会真正提高数据库的安全性,以便能够在两侧进行相同的哈希运算并比较哈希值。

Thks获取反馈,但如果md5不可逆,internet上的这些站点如何将md5字符串解密为明文文本?另外,我对https知之甚少,但如果我将我的spring安全身份验证更改为使用它,这是否意味着当我使用明文密码向身份验证模块发送json请求时,它是安全的?没有人能闻到这气味password@Richie:站点不解密md5字符串。他们对明文字符串进行编码,并将其与md5字符串进行比较。出于安全考虑,除非实现中存在缺陷,否则没有人可以嗅探https流量,这是https的原因之一。您在auth config中没有什么需要更改的,只需在元素上添加requires channel=https属性即可。感谢您的帮助和建议。我要去看戏,看看我能做些什么