登录页面的安全性(使用Servlet / JSP)

时间:2012-02-08 20:52:03

标签: java security jsp servlets

我正在玩servlet和jsp。我想创建一个简单的应用程序。进入后会有登录页面。用户可以输入他的登录名/密码或自行注册。我想知道,如果我想要保护密码不被“截获”,我应该使用https吗?或者是否有其他方法可以在应用程序级别上保护密码?

如果只是这样,是否可以仅从https限制对应用的访问? (如果相关,我正在使用Tomcat。)

2 个答案:

答案 0 :(得分:2)

您需要获得动态数据静态数据的安全性。所以你需要两者。在传输级别,它是SSL(HTTPS),并且在持久性级别通常为hash the password with a salt,并且在显示时您显然希望掩盖输入的密码。

答案 1 :(得分:1)

  

如果我想要保护密码不被“截获”,我应该使用https吗?或者是否有其他方法可以在应用程序级别保护密码?

是的,HTTPS就是为此目的而设计的。不,当您想要使用HTTP时,没有其他方法。要在Tomcat上配置HTTPS,请阅读Tomcat SSL Configuration HOW-TO


  

如果只是这样,是否可以仅从https限制对应用的访问? (如果相关,我使用的是Tomcat。)

是的,这是可能的。使用容器管理的身份验证时,您可以通过在CONFIDENTIAL中将传输保证设置为web.xml来强制执行此操作。另见Java EE 6 tutorial - Securing web applications。 Tomcat与此处不相关,您只需要确保它支持HTTPS,如前所述。

<security-constraint>
    ...
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

如果您正在进行家庭认证,那么您需要实现自定义filter,以检查ServletRequest#isSecure()是否返回false并将重定向发送到正确的HTTPS URL方案。