其攻击原理和HTTP协议的会话管理机制相关。当一个合法用户登录Web应用系统时,会得到一个会话ID以表示登录状态(可能是一个临时Cookie值或一个URL参数),登录用户后续访问同一Web应用系统时,浏览器会通过Cookie字段(或URL参数)递交这个会话ID号,Web应用系统则通过该会话ID认定访问来自合法用户。这样的机制存在漏洞,即Web应用系统只通过会话ID认定访问来源,而不管是不是合法用户的真实访问。也就是说,攻击者如果冒充合法用户发起Web请求,Web应用系统没有办法甄别。
跨站请求伪造攻击是在被攻击者不知情的情况下发生的,攻击过程包括5个基本步骤,如图所示。
①被攻击者使用其合法账户信息登录Web应用系统。
②Web应用系统在检查账户信息后,登录成功,并给被攻击者返回一个会话ID=×××,以表示登录成功状态信息。
③被攻击者在未退出Web应用系统的情况下,访问攻击者所控制的恶意Web网页。
④攻击者在返回的Web网页中嵌入恶意脚本,这段脚本能够发起对Web应用系统的Web请求。
⑤恶意脚本在被攻击者的浏览器上执行,发送伪造的Web请求,到Web应用系统,同时自动捎带会话ID=×××,请求操作成功。