`
jianchen
  • 浏览: 343506 次
  • 性别: 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  
多学习学习

相关推荐

    Java Web应用安全防护:抵御CSRF与XSS攻击的策略

    本文将详细探讨CSRF和XSS攻击的原理、特点以及在Java Web应用中的防护策略。 CSRF和XSS攻击是Web应用开发中必须面对的安全挑战。通过本文的详细介绍,你应该能够理解这些攻击的原理和防护策略。在Java Web应用开发中...

    xss+csrf+html练习源码.rar_XSS_csrf_csrf源码_xss源码_xss练习源码

    在网络安全领域,XSS(Cross-Site Scripting)和CSRF(Cross-Site Request Forgery)是两种常见的攻击手段,而HTML注入则是它们的一种利用方式。这个“xss+csrf+html练习源码.rar”文件提供了针对这些漏洞的实战练习...

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

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

    83.WHUCTF之CSS注入、越权、csrf-token窃取及XSS总结_杨秀璋的专栏-CSDN博客1

    本文主要介绍了网络安全领域中常见的几种攻击手段,包括CSS注入、越权访问、csrf-token窃取以及XSS跨站脚本攻击,并通过WHUCTF比赛中的一个实例进行了详细的解析和实践操作的分享。以下是对这些知识点的详细说明: ...

    网络安全攻击方式XSS初探.pdf

    XSS攻击(Cross-site Scripting,跨站脚本攻击)是一种常见的网络安全攻击手段,攻击者利用恶意脚本代码注入网页,当用户浏览含有恶意脚本的网页时,这些代码会在用户浏览器上执行,从而达到攻击者的目的。XSS攻击...

    Web高级知识-跨域&XSS;&CSRF;解决方案

    【HTTP协议与TCP/IP协议的关系】HTTP协议是...同时,掌握跨域、XSS和CSRF的防范策略,是保障Web应用程序安全的基础。在实际开发中,应根据应用场景选择合适的连接方式,并严格实施安全措施,保护用户数据和系统安全。

    跨站攻击(XSS+CSRF).docx

    总结来说,XSS和CSRF是两种常见的Web安全威胁,理解和掌握这两种攻击的原理、实施方式以及防护措施是保障网络安全的重要一环。通过实际操作和理论学习,学生将深化对Web安全的理解,提高应对网络攻击的能力。

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

    本篇讨论的Web安全的三个攻防姿态主要聚焦于XSS(跨站脚本攻击)、CSRF(跨站请求伪造)、以及clickjacking(点击劫持/UI-覆盖攻击)。 XSS攻击是一种常见的Web安全威胁,恶意攻击者通过将恶意脚本代码嵌入到Web...

    网络安全技术与实践课件 .zip

    网络安全技术与实践是一门深入探讨保护网络系统免受攻击、防止数据泄露以及保障用户隐私的学科。这门课程可能涵盖了广泛的主题,旨在帮助学生和专业人士理解网络安全的基本原理、最佳实践和最新趋势。贾铁军教授的这...

    XSS平台网站源码.zip

    XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的网络安全漏洞,它允许攻击者在用户浏览器中注入恶意脚本,进而控制用户的交互、窃取敏感信息或执行其他恶意操作。XSS平台网站源码是用于学习和研究XSS攻击及...

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

    XSS攻击能够导致一系列严重后果,威胁用户的个人信息安全以及网站的完整性。 1. 网络钓鱼:XSS攻击者可以通过构造钓鱼链接,诱使用户点击,从而盗取各类用户账号,包括社交媒体、邮箱、银行账户等敏感信息。 2. ...

    XSS攻击实例1

    XSS(Cross-site scripting)攻击是一种常见的网络安全威胁,它利用了网站对用户输入的不适当处理,使得攻击者能够在网页中注入恶意脚本,从而影响其他用户。在本实例"XSS攻击实例1"中,我们将探讨这种攻击的原理、...

    Using_XSS_to_bypass_CSRF_protection

    虽然XSS和CSRF都是常见的Web安全问题,但两者之间的区别在于攻击的目标不同。XSS攻击的主要目标是客户端的用户,而CSRF攻击的目标则是服务器端的服务。通过结合这两种攻击方式,攻击者可以更加隐蔽地实施攻击,并...

    CSRF跨站请求伪造CSRF PHP demo代码

    `default_05.gif`、`default_06.gif`和`yellow.jpg`是图片资源,它们与CSRF直接关系不大,但它们的存在提醒我们,Web应用的完整性和安全性也包括对静态资源的管理,防止被利用来进行XSS(跨站脚本)或其他攻击。...

    预防XSS攻击和SQL注入XssFilter

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

    金融行业网络安全解决方案.pdf

    综上所述,金融行业的网络安全解决方案需要从多个层面进行考量,包括但不限于远程访问安全、CRM系统的数据安全、NAS设备的访问控制以及Web服务的安全防护。通过多种技术手段和管理措施的综合应用,金融行业能够构建...

    计算机网络安全理论技术教程

    计算机网络安全理论技术教程是针对网络安全领域的一份详尽学习资料,涵盖了广泛的理论和技术知识,旨在帮助网络安全从业者或爱好者深入理解并提升在这个领域的专业能力。网络安全是保护计算机网络免受恶意攻击、数据...

    网络安全编程实践:协议详解与安全防护技术

    适合人群:网络管理员、网络安全专业人员、程序员和对网络安全感兴趣的技术爱好者。 使用场景及目标:本文适用于希望深入了解网络协议和安全威胁的专业人士,帮助他们掌握安全编程技巧,提升网络系统的安全性。通过...

Global site tag (gtag.js) - Google Analytics