`
alex_gao
  • 浏览: 81021 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

跨站点请求伪造防范(转载)

 
阅读更多

 

CSRF 的防范机制有很多种,防范的方法也根据 CSRF 攻击方式的不断升级而不断演化。常用的有检查 Refer 头部信息,使用一次性令牌,使用验证图片等手段。出于性能的考虑,如果每个请求都加入令牌验证将极大的增加服务器的负担,具体采用那种方法更合理,需要谨慎审视每种保护的优缺点。

1. 检查 HTTP 头部 Refer 信息,这是防止 CSRF 的最简单容易实现的一种手段。根据 RFC 对于 HTTP 协议里面 Refer 的定义,Refer 信息跟随出现在每个 Http 请求头部。Server 端在收到请求之后,可以去检查这个头信息,只接受来自本域的请求而忽略外部域的请求,这样就可以避免了很多风险。当然这种检查方式由于过于简单也有它自身的弱点:

a) 首先是检查 Refer 信息并不能防范来自本域的攻击。在企业业务网站上,经常会有同域的论坛,邮件等形式的 Web 应用程序存在,来自这些地方的 CSRF 攻击所携带的就是本域的 Refer 域信息,因此不能被这种防御手段所阻止。

b) 同样,某些直接发送 HTTP 请求的方式(指非浏览器,比如用后台代码等方法)可以伪造一些 Refer 信息,虽然直接进行头信息伪造的方式属于直接发送请求,很难跟随发送 cookie,但由于目前客户端手段层出不穷,flash,javascript 等大规模使用,从客户端进行 refer 的伪造,尤其是在客户端浏览器安装了越来越多的插件的情况下已经成为可能了。

2. 使用一次性令牌,这是当前 Web 应用程序的设计人员广泛使用的一种方式,方法是对于 Get 请求,在 URL 里面加入一个令牌,对于 Post 请求,在隐藏域中加入一个令牌。这个令牌由 server 端生成,由编程人员控制在客户端发送请求的时候使请求携带本令牌然后在 Server 端进行验证。但在令牌的设计上目前存在着几个错误的方案:

a) 使用和 Session 独立的令牌生成方式。这种令牌的值和 Session 无关,因此容易被其他用户伪造。这里的其他用户指的是当前 Web 应用程序的其他用户和活跃在网络传输阶段各个设置上的监听者,这种恶意用户可能使用自己的令牌来进行替换以便达到伪造的目的。

b) 完全使用 Session 认证信息作为令牌的生成方式。这种保护方式对于保护 CSRF 是起了作用的,但是可能会造成其他危害,具体来说,如果某些 URL 或者网页被拷贝下来与其他人共享,那么这些 URL 或者拷贝下来的网页中可能会含有用户的会话信息,这种信息一旦被恶意用户获得,就能造成极大的危害。

因此,一个正确的令牌设计应该是使用 Session 信息做 Hash,用得出的哈希值来做 CSRF 的令牌。

3. 使用验证图片,这种方法的出现的作用是对于机器人暴力攻击的防止。但在 CSRF 的防范上,也有一些安全性要求比较高的的应用程序结合验证图片和一次性令牌来做双重保护。由于这种图片验证信息很难被恶意程序在客户端识别,因此能够提高更强的保护。当客户端的浏览器可能已经处于一种不安全的环境中的情况下(比如客户端的安全级别设置较低,客户端浏览器安装了不安全的插件等)。

以上给的这些只是防范 CSRF 的比较通用的一些方法,Web 开发人员可以根据自己对自己的应用程序的功能的理解来确定安全级别的要求从而选择使用不同的保护措施,也推荐在同一应用程序内部结合使用多种方法来进行保护。

 

参考:http://www.ibm.com/developerworks/cn/rational/r-cn-webcsrf/#5.CSRF 的防范

分享到:
评论

相关推荐

    Ajax与跨站点请求伪造漏洞

    本文将深入探讨与Ajax相关的跨站点请求伪造漏洞,包括其原理、危害及防范措施。 #### 二、跨站点请求伪造(CSRF/XSRF)概述 跨站点请求伪造(CSRF/XSRF)是一种攻击手段,攻击者通过诱使受害者访问恶意构造的网页...

    防止伪造跨站请求

    标题中的“防止伪造跨站请求”指的是Web应用安全领域中的CSRF(Cross-Site Request Forgery,跨站请求伪造)防护。CSRF攻击是利用用户的已登录状态,诱使用户在不知情的情况下执行非预期的操作,例如转移资金、更改...

    Django中如何防范CSRF跨站点请求伪造攻击的实现

    CSRF跨站点请求伪造(Cross—Site Request Forgery)。 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,...

    security-csrf:Security CSRF(跨站点请求伪造)组件提供了一个CsrfTokenManager类,用于生成和验证CSRF令牌

    CSRF(跨站请求伪造,Cross-Site Request Forgery)是一种网络攻击手段,攻击者通过诱导用户执行非预期的操作,来利用用户在某个网站上的已登录状态,从而达到恶意目的。在Web应用开发中,Symfony Security组件是...

    webProject:具有XSS,SQL注入和Croos站点请求伪造的跨站点脚本

    在IT安全领域,Web应用程序常常面临多种威胁,其中包括SQL注入、XSS(跨站脚本)和CSRF(跨站请求伪造)。这个名为"webProject"的项目显然旨在模拟这些常见漏洞,帮助开发者和安全研究人员了解它们的工作原理,以及...

    Web应用安全:CSRF防范对策.pptx

    **Web应用安全:CSRF(跨站点请求伪造)防范对策** **一、CSRF的定义** CSRF(Cross Site Request Forgery),中文称为跨站点请求伪造,是一种恶意攻击手段,攻击者利用用户已登录的身份,诱导用户访问含有恶意请求...

    网络安全原理与应用:跨站请求伪造CSRF简介.pptx

    跨站请求伪造(CSRF,Cross-site request forgery)是一种针对Web应用的攻击方式,它利用了用户浏览器的隐式身份验证机制,即Cookie。CSRF攻击与跨站脚本(XSS)不同,XSS主要针对的是站点内部的信任用户,而CSRF则...

    93道网络安全面试题目

    * 定义:跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。 * 防范方法: + 安全框架,例如 Spring Security + Token 机制 + 验证码 + Referer 识别 4. 文件上传漏洞 * 定义:用户上传...

    2023 网络安全面试题(93道).pdf

    CSRF攻击(跨站点请求伪造)是一种攻击方式,攻击者通过跨站请求,以合法的用户的身份进行非法操作。防范CSRF攻击的方法包括使用token机制、验证码、referer识别等。 文件上传漏洞 文件上传漏洞是一种攻击方式,...

    网站漏洞处理+解决方法大全

    3. 防范跨站点请求伪造(CSRF),在关键操作前检查CSRF令牌,确保请求的合法性。 4. 不充分的帐户封锁可能让攻击者有足够的时间尝试破解账户,应设置并执行严格的失败登录尝试限制。 总的来说,网站安全是一个持续...

    SQL注入和跨站点脚本

    SQL注入和跨站点脚本(XSS)是两种常见的网络安全威胁,主要针对基于Web的应用程序。这篇文章将深入探讨这两种攻击方式,以及如何在C#环境中防止它们。 **SQL注入** SQL注入是一种攻击手段,攻击者通过输入恶意的...

    信息安全工程师案例分析

    跨站脚本(XSS)和跨站请求伪造(CSRF)也是常见的Web应用攻击。防范XSS的方法包括: 1. 对不可信数据进行适当的转义,避免在HTML上下文中执行恶意代码。 2. 使用白名单输入验证,规范和解码输入。 3. 实施内容安全...

    基础漏洞csrf挖掘实战

    **跨站请求伪造(CSRF)攻击详解** 跨站请求伪造(CSRF)是一种网络攻击方式,它利用了用户浏览器的已登录状态,使攻击者能够以受害者的身份执行非授权的操作。攻击者通常借助受害者在其他网站上的合法会话,通过...

    信息安全技术:CSRF攻击简介.pptx

    信息安全技术是保障网络环境安全的重要领域,其中,跨站请求伪造(CSRF,Cross-site request forgery)是一种常见的网络安全威胁。CSRF攻击利用了用户已经登录并保存了某些敏感信息的Web应用程序,攻击者通过诱导...

    微服务之安全篇

    **定义:** 跨站点请求伪造(Cross-Site Request Forgery, CSRF)是指攻击者利用已认证用户的浏览器发送恶意请求到服务器,从而执行非用户意愿的操作。 **防范措施:** - **Token验证:** 在每次请求时都附带一个由...

    Securing Ajax Application

    3. **跨站点请求伪造(CSRF)**:由于AJAX请求可能在用户的浏览器环境中无声无息地执行,CSRF攻击成为一大威胁。书里可能会讲解如何使用令牌或其他机制来防止未经授权的请求。 4. **数据隐私与加密**:书中可能涵盖...

    互动百科HDwiki 6.0 UTF8.zip

    3.新增CSRF(Cross-site request forgery跨站请求伪造)防范; 3.1防范利用用户标识危害网站; 3.2防范欺骗用户的浏览器发送HTTP请求给目标站点; 3.3防范通过IMG标签触发GET请求并利用利用它来实现CSRF攻击。4....

    Web应用安全:CSRF进阶.pptx

    Web应用安全领域中,CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的攻击方式,它利用了用户已经登录并保持有效session的状态,让攻击者能够以用户的名义发送恶意请求,对用户的数据或者权限进行操纵...

Global site tag (gtag.js) - Google Analytics