我正在阅读教程
http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
它指出
请记住 - 您绝不能依赖于cookie标头中发送到服务器的sessionID; 只查看您的GWT应用程序在消息的有效负载中明确发送到您的服务器的sessionID.
用于防止http://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics
有了这个神话,是否足以防止上述攻击?
是的,这足以防止跨站点请求伪造.
cookie中的sessionid不可信任.假设用户登录到mysite.com并且会话ID在cookie中.现在,用户点击了指向evilsite.com的链接.evilsite.com有这样的代码
该浏览器将做出mysite.com的请求,并且它也将随会话ID发送cookie.这里要理解的是,evilsite.com 无法读取cookie,但它仍然可以完成工作.
浏览器同源策略阻止evilsite.com读取会话标识符,无论是在cookie中还是嵌入在html页面中.但是因为浏览器会自动将cookie发送到您的服务器,即使该资源是从另一个域中的html代码请求的,您也有XSRF.
为防止这种情况,建议将会话标识符作为请求参数.如果将其添加为请求参数,则evilsite.com无法访问标识符,因此无法将其放入img src属性中.
但是,请记住,如果您的站点存在XSS漏洞,则没有任何东西可以阻止您使用XSRF.换句话说,如果你有XSS漏洞,攻击者甚至不会关心做XSRF.