`
jianchen
  • 浏览: 334786 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

csrf以及xss网络安全技术

阅读更多

最近听了一节关于安全技术的分享,了解了诸如fuzz技术,缓存区溢出攻击,以及一些安全测试的工具。之前有了解过,CSRF以及XSS,不过时间一长就忘记了。所以在博客中记录下。摘自于网络,原文链接:http://articles.e-works.net.cn/Security/Article72486.htm

 

1、引言

    跨站点请求伪造(Cross—Site Request Forgery).以下简称CSRF。是一种广泛存在的网站漏洞。Gmail、YouTube等著名网站都有过CSRF漏洞.甚至包括“ING DIRECT”这样的荚国第四大储蓄银行的金融机构网站。2009年3月著名网络安全机构SANS与MITRE结合来自全球超过30个软件工作者及安全专 家,将CSRF列为最危险的25个编程错误之一。

    2、现有的Web安全缺陷

    2.1 Web安全策略

    与CSRF有关的主要有三个Web安全策略:同源策略、Cookie安全策略和Flash安全策略。

    2.1.1同源策略

    同源指的是:同协议,同域名和同端口。同源策略,简单地说就是要求动态内容(例如,JavaScript或者VBScript)只能读取或者修改与之同源 的那些HTTP应答和Cookie.而不能读取来自不同源的内容。浏览器的同源策路限制了脚本只能访问同源下的资源。

    同源策略仅仅阻止了脚本读取来自其他站点的内容.但是却没有防止脚本向其他站点发出请求。因为CSRF攻击是由于某些请求被发出,而引起在服务器端执行了某些动作所引起的,所以同源策略无法防止CSRF攻击。

    2.1.2 Cookie安全策略

    RFC2109定义了Cookie的安全策略。服务器设置Cookie值并为Cookie设置安全属性。Cookie的安全属性包括了Domain、 Path、Secure、Expires、MaxAge和HttpOnly等。Cookie安全策略类似于同源策略并且要比同源策略更安全一些,但是利用 脚本,可以把Cookie的安全级别降低.甚至Cookie的path属性可以被完全绕过。如果一位攻击者可以突破或绕过两源策略的话,就可以通过DOM 的变量document.cookie轻松读取Cookie。

    2.1.3 Flash安全策略

    默认时,Flash的安全策略与同源策略非常类似,来自于某个域的Flash应用只可以读取来自该域的响应。但是Flash的安全策略并不被同源策略限 制.Adobe公司定义了F1ash的跨域策略,该策略通常定义在一个名为crossdomain.xml的策略文件中。该文件定义了哪些域可以和当前域 通信。错误的配置文件可能导致兀ash突破同源策略。导致受到迸一步的攻击。安全研究人员曾经对500个顶级网站进行了分析.发现其中有143个站点使用 了crossdomain.xml策略文件。而在这143个站点中。又有47个站点对来自第三方站点的连接完全接受,这可能导致CSRF漏洞。

    2.2 Web认证方式和浏览器的安全缺陷

    现在的Web应用程序几乎都是使用Cookie来识别用户身份以及保存会话状态。浏览器在最初加入Cookie功能时并没有考虑安全因素。假设一个网站使 用了Cookie,当一个用户完成身份验证之后.浏览器得到一个标识用户身份的Cookie,只要不退出或关闭浏览器。以后访问相同网站下的页面的时候, 对每一个请求浏览器都会“智能”地主动附带上该网站的Cookie来标识自己,用户不需要重新认证就可以被网站识别。当第三方WEB页面产生了指向当前网 站域下的请求时,该请求也会带上当前网站的Cookie。这种认证方式,称之为隐式认证。

    不同浏览器对于Cookie的处理不尽相同,Internet Explorer默认阻止向第三方发送当前的Cookie(见213节),而Firefox和Chrome则默认没有限制。

    现在很多用户上网使用多窗口或多标签页浏览器,例如傲游、Firefox、Opera等。这些浏览器在方便用户的同时也增大了风险,因为它们只有一个进程运行,Cookie在各个窗121或标签页之问是共享的。

    除了Cookie认证方式之外,其他Web认证机制也面临同样的问题。比如HTTP基本认证,用户通过认证后。浏览器仍会“智能”地把用户名和口令附加到 之后第三方发给站点的请求中。即使网站使用了安全套接字(SSL)来加密连接.浏览器也会”智能“地自动把SSL认证信息加到第三方发给站点的请求中。

    2.3 P3P的副作用

    Internet Explorer在处理Cookie时,还遵守P3P(Platform forPrivaey Preferenees)规范。P3P是W3C制定的一项关于Cookie的隐私保护标准,要求网站向用户表明它对用户隐私的处理。比如将收集哪些信息。 信息做何用途等。如果该站点的信息收集行为同用户设定的标准相符,则两者之闻关于个人隐私信息的协定就可以自动地缔结,而用户可毫无阻碍地浏览该站点;如 果不符,浏览器会提醒用户,由用户决定是否对自己制定的个人隐私策略作出修改以进入该网站,双方最终通过一个双向的选择达成用户个人隐私策略。

    P3P策略产生了一个副作用:如果一个网站设置了有效的P3P策略,Internet Explorer允许第三方到它的Web请求自动带上Cookie。网站可能遭到CSRF攻击;如果一个网站没有设置P3P策略或者P3P策略无效,第三 方到它的Web请求不会带有该网站的Cookie,反而免受CSRF攻击。


3、CSRF攻击的原理

    网站是通过隐式认证认证用户时,只要不关闭浏览器或者退出,以后访问相同网站时,浏览器会自动在请求中附带上认证信息。如果浏览器被其它网页控制请求了这个网站的URL,可能会执行一些用户不希望的功能。

    下面用例子来说明:

    假设某个网站(example.com)保存了用户的电子邮件地址信息.并且通过这个邮箱地址实现密码恢复等功能。网站仅采用了Cookie的隐式认证方 式来验证用户.用户在验证登录后可以用如下这个URL来更改自己的邮件地址设置:http://example.com/setemail=邮件地址

    那么攻击者只要创建一个HTML页面包含以下代码:

    < IMG src=“http://example.eom/setemail = 新邮件地址” >

    当已经登录过example.com的用户访问这个页面的时候,浏览器就会向example.com发出请求改变用户的邮箱地址。

    对于所有使用隐式的认证方式并且没有采取针对CSRF攻击的自我保护措施的网站,几乎都可能存在CSRF漏洞。

    4、CSRF与XSS比较

    Cross—Site Scripting Cxssl允许攻击者将恶意代码注入到受害网站的网页上,其他使用者在观看网页时就会受到影响。这类攻击通常包含了HTML以及客户端脚本语言。

    CSRF与之相比区别在于:XSS攻击需要借助脚本语言,CSRF攻击则未必需要脚本语言:XSS需要受害站点接受用户输人来保存恶意代码。而CSRF攻 击可能从第三方网站发起;XSS产生的主要原因是对用户输入没有正确过滤.CSRF产生的主要原因是采用了隐式的认证方式。如果一个网站存在XSS漏洞。 那么它很大可能也存在CSRF漏洞。即使一个网站能够完美地坊御XsS漏洞,却未必能够防御CSRF。

    另外,CSRF与XSS也不是截然分开的,一个攻击可能既是CSRF攻击。又是XSS攻击。

    5.防范CSRF攻击

    为了防范CSRF攻击,理论上可以要求对每个发送至该站点的请求都要显式的认证来消除威胁。比如重新输入用户名和口令。但实际上这会导致严重的易用性问题。所以,提出的防范措施既要易于实行,又不能改变现有的Web程序模式和用户习惯,不能显著降低用户体验。

    5.1服务器端的防范措施

    (1)对于网站所有接受用户输入的内容进行严格的过滤。这条措施不止针对CSRF漏洞,而主要是减少XSS漏洞的可能性。而一个有XSS漏洞的网站,很难保证它对CSRF是安全的。这条措施是其它安全措施的基础。

    (2)GET方法只用于从服务器端读取数据,POST方法用于向服务器端提交或者修改数据。仅使用POST方法提交和修改数据不能防范CSRF攻击,但是 会增加攻击的难度。避免攻击者简单地使用< IMG >等标签就能通过GET方法进行CSRF攻击。

    同时,这样做也符合RFC2616推荐的Web规范。

    (3)在所有POST方法提交的数据中提供一个不可预测的参数,比如一个随机数。或者一个根据时间计算的HASH值。并且在Cookie中也同样保存这个参数。把这个参数嵌入标 签保存在FORM表单中,当浏览器提交POST请求到服务器端时.从POST数据中取出这个参数并且和Cook.ie中的值做比较,如果两个值相等则认为 请求有效,不相等则拒绝。根据同源策略和Cookie的安全策略,第三方网页是无法取得Cookie中的参数值的.所以它不能构造出相同随机参数的 POST请求。

    另外,为了保证一个用户同时打开多个表单页面。所有页面都能正常工作,在一次会话的有效期内。只使用同一个随机参数。也就是说,在会话初始化的时候生成一 个随机参数,在以后的页面和Cookie中,都使用这个参数。直到会话结束,新的会话开始时,才生成新的参数,否则会只有用户最后一次打开的页面才能正常 提交POST请求.多标签或多窗口浏览器会不能正常工作。

    (4)在关键的服务器端远程调用动作之前,增加人机交互环节。例如CAPTCHA人机区分识别程序㈣(典型应用如图片验证码)。

    (5)利用Cookie安全策略中的安全属性,但是不要完全依赖Cookie安全策略中的安全属性,只信任同源策略,并围绕同源策略来打造Web应用程序的安全性。

    (6)正确配置网站针对Flash的跨域策略文件。严格限制跨域、跨站的请求。

    5.2客户端的防范措施

    (1)保持浏览器更新,尤其是安全补丁,包括浏览器的Flash插件等的更新。同时也要留意操作系统、杀毒、防火墙等软件的更新。

    (2)访问敏感网站(比如信用卡、网上银行等)后,主动清理历史记录、cookie记录、表单记录、密码记录,并重启浏览器才访问其他网站。不要在访问敏感网站的同时上其它网站。

    (3)推荐使用某些带有“隐私浏览”功能的浏览器,比如Safail。“隐私浏览”功能可以让用户在上网时不会留下任何痕迹。浏览器不会存储Cookie 和其它任何资料.从而CSRF也拿不到有用的信息。IE 8把它叫做“InPfivate浏览”,Chrome称作“Incognito模式”。     

分享到:
评论
1 楼 wangxiaoming2345 2011-07-15  
多学习学习

相关推荐

    Web安全第三次实验(CSRF,XSS,点击劫持).rar

    抱歉,xss那里修改了下,原来打算直接弹窗的,但上过课以后发现,可以使用ajax的同步发送获取到responseText,再从responseText中剪切出token,这样不会弹窗,并且使用了同步请求,不需要alert特地暂停等待操作完成...

    跨站攻击(XSS+CSRF).docx

    实验目的与要求 1. 能理解XSS注入原理; 2. 能应用Low等级、Medium等级、High级别的XSS; 3. 能理解XSS的修复。 4. 能从攻击者角度、受害者...4) Impossible等级的机制以及修复、防御方法。(10分) 5) 报告撰写规范程

    Web应用安全:XSS安全隐患产生原因.pptx

    XSS安全隐患产生原因 1 XSS安全隐患 目录 2 XSS安全隐患产生原因 XSS安全隐患 1、网络钓鱼,包括盗取各类用户账号; 2、窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作; 3、劫持...

    Web安全的三个XSS-CSRF-CLICK攻防姿

    Web安全的三个XSS-CSRF-CLICK攻防姿Web安全的三个XSS-CSRF-CLICK攻防姿

    预防XSS攻击和SQL注入XssFilter

    XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin...

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

    尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)...

    网络安全零基础学习路线-思维导图 v2023

    最后,不要忘记继续学习并保持对新技术的敏锐感知,网络安全技术 是一个不断更新和发展的领域。 我们落到具体的技术点上来,网络安全学习路线,整体学习时间大概半年左右,具体视每个人的情况而定。 如果你把每周...

    前端安全:如何防止CSRF攻击?

    XSS、CSRF等安全问题之外,又时常遭遇网络劫持、非法调用HybridAPI等新型安全问题。当然,浏览器自身也在不断在进化和发展,不断引入 CSP、Same-SiteCookies等新技术来增强安全性,但是仍存在很多潜在的威胁,这需要...

    网络安全Web攻击思维导图

    网络安全Web攻击思维导图,介绍了XSS、CSRF、SQL注入等知识。

    有关网络安全的学习资料

    整理了网络上的一些安全问题的资料,介绍了XSS,SQL注入,CSRF,和防范时常用的加密算法

    网络安全必读书:Web Hacking 101(中文2023年中文版)

    《Web Hacking 101》是一本网络安全必读书籍,这里是在2023年新整理的版本。包括16章: 一、HTML 注入 二、HTTP 参数污染 三、CRLF 注入 四、跨站请求伪造CSRF 五、应用逻辑漏洞 六、跨站脚本攻击XSS 七、SQL 注入 ...

    前端安全系列:如何防止XSS攻击?

    在移动互联网时代,前端人员除了传统的XSS、CSRF等安全问题之外,又时常遭遇网络劫持、非法调用HybridAPI等新型安全问题。当然,浏览器自身也在不断在进化和发展,不断引入CSP、Same-SiteCookies等新技术来增强安全...

    2020年网络安全大赛样题.docx

    二、赛项信息 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 单兵模式系统渗透测试 任务1 SQL注入攻防 09:00-11:00 25 任务2 XSS和CSRF攻防 25 任务3 命令注入与文件包含攻防 20 第二阶段 分组对抗 系统攻防 ...

    CSRF漏洞详细说明

    Cross-SiteRequestForgery(CSRF),中文一般译作跨站请求伪造。...在跨站请求伪造(CSRF)攻击里面,攻击者通过用户的浏览器来注入额外的网络请求,来破坏一个网站会话的完整性。而浏览器的安全策略是允许当前页面

    网络空间安全的一些题目

    里面主要是一些SQL、XSS、CSRF,命令注入,文件攻防等知识的题目

    web应用之网络安全ppt

    介绍一些常见的 Web 安全威胁: 1,SQL 注入攻击 2,XSS跨站脚本攻击 3,CSRF跨站请求伪造 4,密码破管理

    常见的网络安全攻击和防御方法解析

    包括sql注入、DDos攻击、XSS和CSRF等的攻击原理和防御方法。

Global site tag (gtag.js) - Google Analytics