Security 如何为JSP创建安全的登录系统?

Security 如何为JSP创建安全的登录系统?,security,jsp,encryption,Security,Jsp,Encryption,我得到了一个JSP页面,任何人都可以查看页面源代码并找到用户名和密码。我的任务是让它有点安全。经过一些阅读,我想我会实现一个SHA-256加密系统,但我不太确定如何做到这一点 我应该如何存储哈希密码?我几乎没有任何JSP/安全方面的经验,所以我不完全理解这些步骤。用户输入密码并使用SHA256加密后,是否将该字符串与文本文件中的字符串进行比较?最好的方法是什么 在一个JSP文件中完成整个过程与在多个JSP文件中完成整个过程有什么区别。我注意到,有时登录和加密发生在同一个文件中,而其他时候,表单使

我得到了一个JSP页面,任何人都可以查看页面源代码并找到用户名和密码。我的任务是让它有点安全。经过一些阅读,我想我会实现一个SHA-256加密系统,但我不太确定如何做到这一点

我应该如何存储哈希密码?我几乎没有任何JSP/安全方面的经验,所以我不完全理解这些步骤。用户输入密码并使用SHA256加密后,是否将该字符串与文本文件中的字符串进行比较?最好的方法是什么


在一个JSP文件中完成整个过程与在多个JSP文件中完成整个过程有什么区别。我注意到,有时登录和加密发生在同一个文件中,而其他时候,表单使用其他JSP文件。

使用SpringWebMVC+SpringSecurity插件,它只提供xml和数据库即可满足您的所有需要

<beans:beans xmlns="http://www.springframework.org/schema/security"
             xmlns:beans="http://www.springframework.org/schema/beans" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security.xsd">
    <http  auto-config="true"  use-expressions="true">
        <intercept-url pattern="/admin*" access="hasAnyRole('ROLE_Admin')" />
        <form-login login-page="/login" default-target-url="/welcome"
                            authentication-failure-url="/loginfailed" />
        <logout logout-success-url="/login" />
    </http>
    <authentication-manager>
        <authentication-provider>
            <password-encoder hash="sha256"/>
        <jdbc-user-service data-source-ref="dataSource"
           users-by-username-query="
              select username,password, enabled 
              from users where username=?" 
           authorities-by-username-query="
              select u.username, u.authority from users u
              where u.username =?  " 

        />
        </authentication-provider>
    </authentication-manager>
</beans:beans>


这是一个相当广泛的话题,没有简单/单一的答案。准备好查看有关要求、数据库系统等的评论。。。下面是一个使用MySQL将密码存储在DB中明文存储的部分的示例,您可以使用
javax.crypto
包使用salt对密码进行加密,以便稍后在登录时验证密码。我认为在我的情况下使用DB太复杂了。我的意思是,这最初是从页面源代码中的密码开始的。我一直在看一些登录servlet文件,我看到其中一个文件中存储了username/pw。我只想下一步对这些进行散列。再想一想,在文本文件中存储散列密码有什么意义吗?似乎在文本文件中存储密码是一样的,不管它是否经过哈希处理。我想我必须让所有的密码都通过数据库才能使它更安全。你应该使用应用服务器的内置安全机制