跨站点请求伪造

跨站点请求伪造

  • 危害:可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务
  • 可能原因:应用程序使用的认证方法不充分
  • 技术分析:即使是格式正确、有效且一致的请求也可能已在用户不知情的情况下发送。因此,Web 应用程序应检查所有请求以发现其不合法的迹象。此测试的结果指示所扫描的应用程序没有执行此操作。此脆弱性的严重性取决于受影响应用程序的功能。例如,对搜索页面的 CSRF 攻击的严重性低于对转账或概要文件更新页面的 CSRF 攻击。如果某个 Web 服务器设计为接收客户机的请求时无任何机制来验证该请求是否确实是客户机发送的,那么攻击者就有可能诱导客户机向该 Web 服务器误发请求,而该请求将视为真实请求。这可通过 URL、图像装入、XMLHttpRequest 等来完成,并可导致数据暴露或意外的代码执行。如果用户当前已登录到受害者站点,请求将自动使用用户的凭证(包括会话 cookie、IP 地址和其他浏览器认证方法)。通过使用此方法,攻击者可伪造受害者的身份,并以其身份提交操作
  • 修订建议:

有多种减轻威胁的技巧:

[1] 策略:库或框架

使用不允许此弱点出现的经过审核的库或框架,或提供更容易避免此弱点的构造。

例如,使用能防御 CSRF 的软件包,例如 OWASP CSRFGuard -

http://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

另一个示例为“ESAPI 会话管理”控件,其中包括针对 CSRF 的组件 -

http://www.owasp.org/index.php/ESAPI

[2] 确保应用程序中没有跨站点脚本编制问题 (CWE-79),因为通过使用攻击者控制的脚本可绕过大部分 CSRF 防御。

[3] 为每个表单生成唯一的现时标志,将现时标志放到表单中,并在接收表单时验证现时标志。请确保现时标志是不可预测的 (CWE-330)
-

http://www.cgisecurity.com/articles/csrf-faq.shtml

请注意,通过使用 XSS (CWE-79) 可绕过这一点。

[4] 识别特别危险的操作。在用户执行危险操作时,发送单独的确认请求以确保是用户自己希望执行该操作。请注意,通过使用 XSS
(CWE-79) 可绕过这一点。

[5] 使用“两次提交的 cookie”方法,如 Felten 和 Zeller 所述:

在用户访问站点时,该站点应生成伪随机值,并将其设置为用户机器上的 cookie。站点应要求每次表单提交都包括该值作为表单和 cookie
值。向站点发送 POST 请求时,只有表单和 cookie 值相同时才应将该请求视为有效。

由于同源策略,攻击者无法读取或修改 cookie
中存储的值。要以用户的身份成功提交表单,攻击者必须正确猜出伪随机值。如果伪随机值的保密性很强,这将是极端困难的。此技巧需要 JavaScript,因此对于禁用了
JavaScript 的浏览器可能无效 -

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.147.1445

请注意,使用 XSS (CWE-79) 有可能绕过这一点,或者在使用支持攻击者从 HTTP 请求中读取原始头的 Web
技术时也有可能绕过这一点。

[6] 请勿对触发状态更改的任何请求使用 GET 方法。

[7] 检查 HTTP Referer 头以查看请求是否源自预期的页面。这可能会破坏合法功能,因为用户或代理可能已出于隐私原因而禁止发送
Referer。请注意,通过使用 XSS (CWE-79) 可绕过这一点。

攻击者可能使用 XSS 来生成欺骗性的 Referer,或从允许使用其 Referer
的页面生成恶意请求。

时间: 2024-11-15 12:28:15

跨站点请求伪造的相关文章

[不常用] - CSRF(跨站点请求伪造)

CSRF,Cross Site Request Forgery,即跨站点请求伪造.   这种攻击是指,在用户正常登录系统以后,攻击者诱使用户访问一些非法链接,以执行一些非法操作. 比如:如果删除用户操作(如,yourdomain.com/deluser?id=123)没有经过防范CSRF的处理,那么,假设用户登录系统后,攻击者诱使用户同时访问了攻击者的站点的一个链接(该链接正好为yourdomain.com/deluser?id=123),那么,系统就会在用户不知情的情况下丢失一个用户.    

我要学ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击

我要学ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击 概述      众所周知,ASP.Net MVC程序在浏览器运行时产生了标准的Html标签,包括浏览器要发送的关键数据等内容都在Html内容里面,听起来不错,但是假如我们仿造类似的Html内容,更改里面关键数据,在浏览器运行起来会怎么样呢?好下面我们就做这样一个例子.       CSRF攻击例子 首先我们拿以前做好的person/edit作为例子 先看控制器代码 //初始页面        

《白帽子讲WEB安全》学习笔记之第4章 跨站点请求伪造(CSRF)

第4章 跨站点请求伪造(CSRF) 4.1 CSRF简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为"one click attack"或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用. CSRF是一种依赖web浏览器的.被混淆过的代理人攻击(deputy attack). 4.2 CSRF进阶 浏览器所持有的Cookie分为两种:一种是"Sesion Cookie",又称"

跨站点请求伪造(CSRF)

CSRF(Cross Site Request Forgery)跨站点请求伪造:攻击者诱使用户在访问 A 站点的时候点击一个掩盖了目的的链接,该链接能够在 B 站点执行某个操作,从而在用户不知情的情况下完成了一次对 B 站点的修改. CSRF 实现 Cookie 策略 Cookie 分为 Session Cookie(临时 Cookie) 和 Third-party Cookie(本地 Cookie).本地 Cookie 有失效时间,在失效时间内都可以使用.临时 Cookie 则在浏览器关闭后立

CSRF(跨站点请求伪造)

引起原因:个人认为 csrf 在 Ajax 盛行的今天来说,倒是方便了,因为它可以在你不知道的情况用你的通过验证用户进行操作,所以也被称为浏览器劫持.如果你已通过某个网站的验证那么你将以你的角色对网站进行操作,比如你是管理员可以添加其它的用户到管理组,但是如果有人构造了添加管理员的链接被管理员点后也会执行相应操作. 解决方法: 修改信息时添加验证码或添加 Session 令牌(ASP.NET中已经提供一个自动防范的方法,就是用页面属性 ViewStateUserKey.在Page_Init方法中

Django中如何防范CSRF跨站点请求伪造***

CSRF概念 CSRF跨站点请求伪造(Cross-Site Request Forgery). ***者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了***者所期望的一个操作,比如以你的名义发送邮件.发消息,盗取你的账号,添加系统管理员,甚至于购买商品.虚拟货币转账等. CSRF***原理以及过程 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A: 2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功

跨站点请求伪造(CSRF)总结和防御

什么是CRSF 构建一个地址,比如说是删除某个博客网站博客的链接,然后诱使已经登录过该网站的用户点击恶意链接,可能会导致用户通过自己的手将曾经发布在该网站的博客在不知情的情况下删除了.这种构建恶意链接,假借受害者的手造成损失的攻击方式就叫CSRF-跨站点请求伪造. 浏览器Cookie策略 cookie分类 cookie根据有无设置过期时间分为两种,没有设置过期时间的为Session Cookie(会话cookie),firefoox有标注哪些cookie是会话cookie,这种cookie保存在

CSRF跨站点请求伪造漏洞问题

最近在写php,项目写完后送检发现一个漏洞问题CSRF,强行拖了我一天的时间,沉迷解决问题,茶饭不思,日渐消瘦,时间比较赶,这篇比较糙,凑合看下. 好了废话不多说下面是今天的解决方案. 博主用的是Thinkphp框架,发现这个问题的时候第一件事就是去查下相关资料,发现发现网上说可以通过表单令牌来解决这个问题. 如果不设置表单令牌,很容易导致CSRF(跨站请求伪造).跨站提交表单. 表单令牌是一种非常实用的技术(博主ps:其实鸡肋),它在表单的视图部分生成随机令牌,默认为随机的MD5串,存在hid

csrf跨站点请求伪造

什么是csrf(跨站请求伪造) 伪造请求的定义有很多种,我将不是用户本意发出的请求统称为伪造请求(在用户不知情的情况下执行某些操作)xss的通过用户对浏览器的信任造成的,csrf是通过服务器对浏览器的信任造成的 csrf的原理及过程: 假设有a用户和b网站c网站 c网站为恶意网站 a用户正常登录b网站,登录成功,b网站返回一个cookie给a用户 b用户访问c网站,c网站在a用户不知情的情况下要求a的浏览器访问b网站的特点功能,浏览器正常执行 b网站接到a浏览器的请求,正常执行a用户浏览器的请求