- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录Session 会话劫持2模拟会话劫持2防范措施3 (1)设置 httponly (2)session + token验证(3)CAS校验Session 会话劫持会话标识是随机数据的唯一字符串,一般来说由数字和字符组成,这个字符串由web应用生成并通过cookie的方式发送给用户。在会话标识被发送之后,每个用户发出的请求都在其它请求中包含了该应用发送给他的会话标识。通过使用会话标识,web应用能够识别不同的用户,区分并发的请求和及时追踪用户。会话标识是首要的攻击目标,因为成功的捕获并重演会话标识可以为攻击者提供易受攻击web应用的当即认证。根据窃取到的ID所属用户的访问权限,攻击者可以像普通用户,甚至是特权用户一样登录网站,并访问各种隐私数据模拟会话劫持我们正常地登录一个网站,登录的用户名是admin,记录好登录后的JSESSIONID我们打开另一个浏览器Firefox,我们尝试访问一个私密链接:http://localhost/ puzzlemall/private/viewprofile.jsp,这时浏览器会提示我们登录。这说明这个链接需要登录以后才能观看打开WebScrab并开启Proxy中的“Intercept requests”功能,并把Firefox的代理设置成WebScrab的IP和端口(8008),然后再次访问这个私密链接,这时WebScrab会截获这个请求,然后修改JSESSIONID为上面admin用户的JSESSIONID这时我们会发现进入了admin用户的个人信息(profile)页面。这说明我们成功地以admin用户的身份进行了登录。当然了,这个例子只是一个会话劫持的模拟,在实际的网络中,JSESSIONID往往是通过XSS泄露出去的(或者没有走安全的协议而被嗅探)防范措施(1)设置 httponly,可以防止其他人和脚本获取到sessionHttpOnly标识是一个可选的、避免利用XSS(Cross-Site Scripting)来获取session cookie的标识。XSS攻击最常见一个的目标是通过获取的session cookie来劫持受害者的session;使用HttpOnly标识是一种很有用的保护机制。可以人工设置这些参数,如果在Servlet3或者更新的环境,tomcat7中开发,只需要在web.xml简单的配置就能实现这种效果:session-configcookie-confighttp-onlytrue/http-only/cookie-config/session-config!--而且如果使用了secure标识,配置应该如下 --session-configcookie-confighttp-onlytrue/http-onlysecuretrue/secure/cookie-config/session-config兼容 Java EE 6.0 的容器,如 Tomcat 7,那么 Cookie 类已经有了 setHttpOnly 的方法来使用 HttpOnly 的 Cookie 属性cookie.setHttpOnly(true);(2)session + token验证,不仅验证sesion还要验证自己的token实现原理:一致性。jsp生成表单时,在表单中插入一个隐藏input字段,该字段就是保存在页面端的token字符串,同时把该字符串存入session中。等到用户提交表单时,会一并提交该隐藏的token字符串。在服务器端,查看下是否在session中含有与该token字符串相等的字符串。如果有,那么表明是第一次提交该表单,然后删除存放于session端的token字符串,再做正常业务逻辑流程;如果没有,那么表示该页面不正常提交,做非正常流程处理,可以警告提示也可以什么也不做。Token主类文件:jsp页面端 %@ page import=Token %表单包含隐藏的token字符串: forminput?type=hidden?name=%=Token.TOKEN_STRING_NAME?%?value=%=Token.getTokenString(session)?%/form 在Server端action中进行检验 if(Token.isTokenStringValid(request.getParameter(Token.TOKEN_STRING_NAME),?request.getSession())){//进行正常业务流程}else{//进行进行异常处理流程}(3)CAS校验CAS 基础协议 CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client
文档评论(0)