常用的web安全处理
1:用户名和密码认证通过后,必须更换会话标识,以防止会话固定(session fixation)漏洞。
实施指导:
在用户名和密码认证通过后增加以下两行代码: request.getSession().invalidate(); request.getSession(); |
2:验证码字符串要求是随机生成,生成的随机数必须是安全的。
说明:对于java语言可以使用类 java.security.SecureRandom来生成安全的随机数。
3:禁止带有敏感数据的Web页面缓存。
说明:带有敏感数据的Web页面都应该禁止缓存,以防止敏感信息泄漏或通过代理服务器上网的用户数据互窜问题。
实施指导:
在HTML页面的<HEAD>标签内加入如下代码: <HEAD> <META HTTP-EQUIV="Expires" CONTENT="0"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-control" CONTENT="no-cache"> <META HTTP-EQUIV="Cache" CONTENT="no-cache"> </HEAD> 在JSP页面的最前面加入如下代码: <% response.setHeader("Cache-Control","no-cache"); response.setHeader("Pragma","no-cache"); response.setDateHeader("Expires",0); %> 注意:以上代码对于采用强制缓存策略的代理服务器不生效(代理服务器默认是不缓存的),要防止代理服务器缓存页面,可以在链接后加入一个随机数pageid,此时链接变成:http://localhost:8080/query.do?a=2&pageid=2245562, 其中2245562数字是随机生成的,每次请求此页面时,随机数都不同,IE始终认为此为一个新请求,并重新解析,生成新的响应页面。 |