每一步的七大特性新性特与增强功能.docVIP

  • 2
  • 0
  • 约8.06千字
  • 约 6页
  • 2017-02-09 发布于北京
  • 举报

每一步的七大特性新性特与增强功能.doc

每一步的七大特性新性特与增强功能

Tomcat 7的七大特性:新特性与增强功能 作者: Avneet Mangat 1. 使用 随机数令牌(nonce)来阻止跨站请求伪造(CSRF)攻击 Webopedia(在线计算机字典)这样定义跨站请求伪造(CSRF):“一种恶意攻击基于web的应用程序。一次典型的恶意攻击将迫使用户在登录可信任站点的时候执行一些不必要的操作。”对CSRF更形象的定义是 session riding(子乌注:好吧,这个“更形象”的定义我实在看不懂……可参看session riding)。 阻止CSRF的典型做法就是使用随机数令牌,在wikipedia中对它的定义是“一个 用于认证协议的随机或伪随机数,以确保老的通信不会在重播攻击中被复用。” Tomcat 7 有一个servlet过滤器,用于在每次提交请求之后在用户的会话中保存一个随机数令牌。这个随机数令牌必须添加到后续的每一个请求中做为一个请求参数。这个servlet过滤器会检测这个请求参数是否与存储于用户会话中的随机数令牌一致。如果一致,请求就只能是来自指定站点。如果不同,这个请求会被认为是来自不同的站点并被拒绝。 servlet过滤器非常简单。这里有一个相关源码(来自 Apache Software Foundation CsrfPreventionFilter 文档)的片断: Language: Java public class CsrfPreventionFilter extends FilterBase { ... ... ... public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { ... ... ... String previousNonce = req.getParameter(Constants.CSRF_NONCE_REQUEST_PARAM); String expectedNonce = (String) req.getSession(true).getAttribute(Constants.CSRF_NONCE_SESSION_ATTR_NAME); if (expectedNonce != null !expectedNonce.equals(previousNonce)) { res.sendError(HttpServletResponse.SC_FORBIDDEN); return; } String newNonce = generateNonce(); req.getSession(true).setAttribute(Constants.CSRF_NONCE_SESSION_ATTR_NAME, newNonce); ... ... ... 所以每个URL都必须包含一个从用户会话中获取的随机数令牌。这是一个使用JSP-EL的示例:: Before: Language: XML 1 2 3 4 c:url var=url value=/show c:param name=id value=0 / /c:url a href=${show} Show/a After: Language: XML c:url var=url value=/show c:param name=id value=0 / c:param name=org.apache.catalina.filters.CSRF_NONCE value=${.apache.catalina.filters.CSRF_NONCE} / /c:url a href=${show}Show/a拿附件 Tomcat 7 示例的样本工程作为示例。web.xml 文件中配置了过滤器,随着这个过滤器的到位,所有访问 http://localhost:8080/tomcat7demo/csrf/ URL的请求如果没有将随机数令牌作为请求参数都会返回403错误 (“访问被拒绝”)。 一个非法请求(如在垃圾邮件中)不可能拥有随机数令牌。因此,一个session riding攻击无法奏效。即使如果用户点击了一个恶意链接或提交了一个恶意表单,请求也会被拒绝,因为没有随机数令牌。随机数令牌目前只会存在于web应用返回的web页面中。 这种方法的缺陷是所有的URL链接都必须带着这个随机数令牌做请求参数。 2. 验证时改变 jsessionid 以防止固定会话攻击 一个固定会话攻击发生时可能像这样: 一个恶意用户访问一个站点后,浏览器会有一个cooki

文档评论(0)

1亿VIP精品文档

相关文档