我有一个web应用程序,当用户登录时,他们可以访问mainjsp.jsp
页面。
在该页面中,几乎没有日期文本框,根据日期和从另一个下拉列表中选择的内容,提交数据。该数据由servlet
检索并返回到mainjsp
页面。
我关心的是安全问题。现在,当我复制粘贴mainjsp.jsp
页面的URL并将其粘贴到任何浏览器中时,该页面都会按原样显示。我不希望发生这种情况。我希望用户首先登录,因此我希望我的网络应用程序安全。
我不知道该怎么做。你能告诉我怎样才能做到这一点吗?
另外,请告诉我如何为网络应用程序中的任何页面实现这一点。如果用户没有登录,就不能访问任何页面。
您应该具有基于表单的身份验证。以下是应该添加到web.xml中的片段
<security-constraint>
<web-resource-collection>
<web-resource-name>pagesWitUnrestrictedAccess</web-resource-name>
<description>No Description</description>
<url-pattern>*.jsp</url-pattern>
</web-resource-collection>
<user-data-constraint>
<description>No Description</description>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/loginerror.jsp</form-error-page>
</form-login-config>
</login-config>
一些参考文献:
- 保护Web应用程序
- 保护Java EE 5 Web应用程序
- 在部署描述符中声明安全要求
您可以检查Shiro是否使用开箱即用的安全框架,以防止在web环境中出现高级安全问题。
Spring Security 3功能强大,易于配置
http://static.springsource.org/spring-security/site/docs/3.0.x/reference/ns-config.html#ns-最小
使用会话。在登录时设置一个会话变量,并在每个页面上进行检查以确保安全。
当用户输入凭据并将其提交到登录servlet时,在会话中添加用户名或用户id。检查应用程序标题中的会话属性(每页都是如此),即会话中是否存在用户名或用户id?如果是,则将其重定向到请求的页面,否则将用户重定向到login.jsp。例如:
String var= null;
try {
var= (String) session.getAttribute("user_name_session");
if (var== null) {
response.sendRedirect("/Login.jsp");
return;
}
}
catch (Exception e) {
System.out.println(e);
}
您可以根据自己的要求修改代码段,这是防止用户通过将链接复制到另一个浏览器来访问任何页面的最简单方法。
这是将HTTP请求转换为HTTPS请求的最佳方式
http://middlewaremagic.com/weblogic/?p=2019