跨站请求伪造 (CSRF)

    跨站请求伪造 (CSRF)

    CSRF与跨站脚本(XSS)非常相似, 只有一个非常重要的不同之处。XSS利用客户端的弱点,而CSRF利用的是网站服务器的弱点。

    按照OWASP, “一个CSRF袭击迫使某个登录的浏览器向易受攻击的Web应用发送一个请求,然后以受害者的名义,为入侵者的利益进行所选择的行动”(“OWASP Top 10”, 2007 (RC1), 19页)。

    这段描述的关键部分是“强迫已登录的”受害者发送请求。攻击者利用网站对目标用户的信任。这意味着如果攻击取得成功,攻击者就能代表用户执行以下行为:

    ◆购买商品 
    ◆转账 
    ◆运行恶意软件,留下很少或不留下查明真实攻击者的痕迹 
    ◆进行股票交易 
    ◆订阅在线服务

    CSRF并不是一个简单的问题。据ha.ckers.org创立者rsnake称,互联网上有太多CSRF脆弱性需要注意(Kelly Jackson Higgins,“CSRF脆弱性:‘一个沉睡的巨人’”,darkReading,2006年10月17日)。WhiteHat Security的建立者Jeremiah Grossman也赞同这个观点,他指出:“由于工作机制与Web相似,[CRSF]并不被看作是一个脆弱性”(同上)。

    那么其工作原理是什么呢?HTML镜像标签和JavaScript镜像对象是CSRF最常用的两个路径。图C中列出了CSRF攻击常用的HTML和JavaScript方法(Robert Auger,“跨站请求伪造(CSRF/XSRF)常见问题解答”,cgisecurity.net,2007年1月28日)。

    OWASP要素增强Web应用程序安全(6)

    图C CSR攻击

    对用户的攻击有多种方法,包括e-mail和诱使用户点击入侵者网站上的某个链接。一旦发动攻击, 它依靠目标网站上的一个现有可信会话或受害者PC上的一个自动登录cookie来执行。如果存在一个可信会话,攻击命令就在受害者的安全环境中,在网站服务器上运行。

    预防CSRF攻击相当困难,但并非无法预防。用户能够采用的最佳防御手段是采取适当的步骤,保证可信会话不会被攻击者所利用。

    ◆完成任务后退出可信会话。 
    ◆让网站记住你的登录用户名和密码时要小心。留在客户端的登录信息可能会攻击者加以利用。 
    ◆在完成可信会话后删除所有cookie。

    在努力编写不易受到CSRF攻击的应用程序时,网站开发者面临更大的挑战。下面是一些应该考虑的应对措施:

    ◆设定短暂的可信用户会话时间。 
    ◆每次提出一个可信行为时,对发出请求的用户进行验证。 
    ◆在URL和表单中增加的每个请求nonce提供基本会话令牌以外的每个请求用户验证。 
    ◆从应用程序中删除所有XSS脆弱性。攻击者通过XSS可获得有用的攻击信息。例如,攻击者可以伪造一个提示用户输入身份信息的表单。

    结论

    不安全的直接对象引用所造成的漏洞很容易预防。基本的文件夹和目录访问控制以及一致的输入确认即使不能抵御全部攻击,也能够阻止大多数这类攻击。

    CSRF是一种更难防御的脆弱性。提高用户的危险意识以及说明如何保护自己免受攻击是一个好的开始。开发者必须了解如何建立一个可信会话,以及在提出可信行为时如何重新验证用户身份。只有全面了解Web应用程序的设计过程才能开发出不会受到CRSF攻击的网站。

你可能感兴趣的:(CSRF,跨站请求伪造)