专家深入解析跨站请求伪造漏洞(上)
2008-12-25 13:44:09 来源:WEB开发网对于所有使用隐式的认证方式并且没有采取显式的针对CSRF攻击的自我保护措施的站点,CSRF攻击几乎总能得手。
三、跨站请求伪造漏洞的根本原因
CSRF攻击经常利用目标站点的身份验证机制,CSRF攻击这一弱点的根源在于Web的身份验证机制虽然可以向目标站点保证一个请求来自于某个用户的浏览器,但是却无法保证该请求的确是那个用户发出的或者是经过那个用户批准的。例如,假如Alice在浏览目标站点T,那么站点T便会给Alice的浏览器一个cookie,用于存放一个伪随机数作为会话标识符sid,以跟踪她的会话。该站点会要求Alice进行登录,当她输入有效的用户名和口令时,该站点会记录这样一个事实:Alice已经登录到会话sid。当Alice发送一个请求到站点T时,她的浏览器就会自动地发送包含sid的会话cookie。之后,站点T就会使用站点的会话记录来识别该会话是否来自Alice。
现在,我们假设Alice访问了一个恶意站点M,该站点提供的内容中的JavaScript代码或者图像标签会导致Alice的浏览器向站点T发送一个HTTP请求。由于该请求是发给站点T的,所以Alice的浏览器自动地给该请求附上与站点T对应的该会话cookie的sid。站点T看到该请求时,它就能通过该cookie的推断出:该请求来自Alice,所以站点T就会对Alice的帐户执行所请求的操作。这样,CSRF攻击就能得逞了。
其他大多数Web认证机制也面临同样的问题。例如,HTTP BasicAuth机制会要求Alice告诉浏览器她在站点T上的用户名和口令,于是浏览器将用户名和口令附加到之后发给站点T的请求中。当然,站点T也可能使用客户端SSL证书,但这也面临同样的问题,因为浏览器也会将证书附加到发给站点T的请求中。类似的,如果站点T通过IP地址来验证Alice的身份的话,照样面临CSRF攻击的威胁。
更多精彩
赞助商链接