WEB安全的防御--介绍XSS跨网站脚本[wiki]
来源:互联网 发布:上山下乡知乎 编辑:程序博客网 时间:2024/06/05 02:40
跨网站脚本
跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
- 跨网站脚本
- 目录
- 背景和现状编辑
- 缩写编辑
- 检测方法编辑
- 攻击手段和目的编辑
- 漏洞的防御和利用编辑
- 过滤特殊字符编辑
- 使用HTTP头指定类型编辑
- 用户方面编辑
- 外部链接编辑
- 脚注编辑
背景和现状[编辑]
当网景(Netscape)最初推出JavaScript语言时,他们也察觉到准许网页服务器发送可运行的代码给一个浏览器的安全风险(即使仅是在一个浏览器的沙盒里)。它所造成的一个关键的问题在于用户同时打开多个浏览器视窗时,在某些例子里,网页里的片断代码被允许从另一个网页或对象取出数据,而因为恶意的网站可以用这个方法来尝试窃取机密信息,所以在某些情形,这应是完全被禁止的。为了解决这个问题,浏览器采用了同源决策——仅允许来自相同域名系统和使用相同协议的对象与网页之间的任何交互。这样一来,恶意的网站便无法借由JavaScript在另一个浏览器窃取机密数据。此后,为了保护用户免受恶意的危害,其他的浏览器与服务端指令语言采用了类似的访问控制决策。
XSS漏洞可以追溯到1990年代。大量的网站曾遭受XSS漏洞攻击或被发现此类漏洞,如Twitter[1],Facebook[2],MySpace,Orkut[3][4] ,新浪微博[5]和百度贴吧 。研究表明[6],最近几年XSS已经超过缓冲区溢出成为最流行的攻击方式,有68%的网站可能遭受此类攻击。根据开放网页应用安全计划(Open Web Application Security Project)公布的2010年统计数据,在Web安全威胁前10位中,XSS排名第2,仅次于代码注入(Injection)。[7]
缩写[编辑]
Cross-site scripting的缩写是CSS,但因为CSS在网页设计领域已经被广泛指层叠样式表(Cascading Style Sheets),所以将Cross改以发音相近的X做为缩写。但早期的文件还是会使用CSS表示Cross-site scripting。
检测方法[编辑]
通常有一些方式可以测试网站是否有正确处理特殊字元:
><script>alert(document.cookie)</script>
='><script>alert(document.cookie)</script>
"><script>alert(document.cookie)</script>
<script>alert(document.cookie)</script>
<script>alert (vulnerable)</script>
%3Cscript%3Ealert('XSS')%3C/script%3E
<script>alert('XSS')</script>
<img src="javascript:alert('XSS')">
<img src="http://xxx.com/yyy.png" onerror="alert('XSS')">
- (这个仅限IE有效)
攻击手段和目的[编辑]
攻击者使被攻击者在浏览器中执行脚本后,如果需要收集来自被攻击者的数据(如cookie或其他敏感信息),可以自行架设一个网站,让被攻击者通过JavaScript等方式把收集好的数据作为参数提交,随后以数据库等形式记录在攻击者自己的服务器上。
常用的XSS攻击手段和目的有:
- 盗用cookie,获取敏感信息。
- 利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
- 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
- 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
- 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。
漏洞的防御和利用[编辑]
过滤特殊字符[编辑]
避免XSS的方法之一主要是将用户所提供的内容进行过滤,许多语言都有提供对HTML的过滤:
- PHP的
htmlentities()或是htmlspecialchars()
。 - Python的
cgi.escape()
。 - ASP的
Server.HTMLEncode()
。 - ASP.NET的
Server.HtmlEncode()
或功能更强的Microsoft Anti-Cross Site Scripting Library - Java的xssprotect (Open Source Library)。
- Node.js的node-validator。
使用HTTP头指定类型[编辑]
很多时候可以使用HTTP头指定内容的类型,使得输出的内容避免被作为HTML解析。如在PHP语言中使用以下代码:
<?phpheader('Content-Type: text/javascript; charset=utf-8');?>
即可强行指定输出内容为文本/JavaScript脚本(顺便指定了内容编码),而非可以引发攻击的HTML。
用户方面[编辑]
包括Internet Explorer、Mozilla Firefox在内的大多数浏览器皆有关闭JavaScript的选项,但关闭功能并非是最好的方法,因为许多网站都需要使用JavaScript语言才能正常运作。通常来说,一个经常有安全更新推出的浏览器,在使用上会比很久都没有更新的浏览器更为安全。
外部链接[编辑]
- CERT® Advisory CA-2000-02 Malicious HTML Tags Embedded in Client Web Requests (英文)
- Cross Site Scripting Info (英文)
- The Same Origin Policy (英文)
- XSS (Cross Site Scripting) Cheat Sheet (英文)
脚注[编辑]
- ^ Arthur, Charles. Twitter users including Sarah Brown hit by malicious hacker attack. The Guardian. September 21, 2010 [September 21, 2010].
- ^ Leyden, John. Facebook poked by XSS flaw. The Register. May 23, 2008 [May 28, 2008].
- ^ Full List of Incidents. Web Application Security Consortium. February 17, 2008 [May 28, 2008].
- ^ Obama site hacked; Redirected to Hillary Clinton. ZDNet. April 21, 2008 [May 28, 2008].
- ^ 新浪微博病毒事件分析. SOHU. 2011-06-28.
- ^ Berinato, Scott. Software Vulnerability Disclosure: The Chilling Effect. CSO (CXO Media). January 1, 2007: 7 [June 7, 2008]. (原始内容存档于2008-04-18).
- ^ OWASP Top 10 - 2010 Document (PDF). OWASP. April 19, 2010 [Jan 2, 2013].
- 2003年骤雨计划
- 2010年澳大利亚网络攻击
- 2010年偿还行动
- 2011年DigiNotar黑客入侵事件
- 2011年突尼斯行动
- 2011年PSN个人信息泄露事件
- 2011年反安全行动
- 2012–2013年斯特拉特福公司电邮泄露事件
- 2012年领英黑客入侵事件
- 2013年南韩网络攻击
- 2013年Snapchat黑客入侵事件
- 2014年Tovar行动
- 2014年日本文殊核电站电脑病毒事件
- 2014年名人照片泄露事件
- 2014年心脏出血漏洞
- 2014年破壳漏洞
- 2014年贵宾犬漏洞
- 2014年索尼影业黑客入侵事件
- 2015年FREAK漏洞
- 2015年美国联邦人事管理局资料外泄案
- 美国网战司令部
- 特定入侵行动办公室
- 中国人民解放军61398部队
- 朝鲜网络部队
- 朝鲜121局
- 叙利亚电子军
- 日本网络防卫队
- 国际打击网络威胁多边伙伴
- 美国互联网犯罪投诉中心
- 欧洲网络犯罪中心
- 匿名者
- 网络金雕
- Derp
- Goatse安全
- Hacking Team
- 蜥蜴小队
- LulzRaft
- LulzSec
- NullCrew
- RedHack
- TeaMp0isoN
- 地下纳粹
- 混沌计算机俱乐部
- 死牛崇拜
- 中国红客联盟
- 夜龙
- 韩国网络外交使节团
- L0pht重工
- 地下军团 (Legions of the Underground)
- 方程式
- 香港金发女 (Hong Kong Blondes)
- 约翰·德雷珀
- 凯文·米特尼克
- 下村努
- 罗伯特·泰潘·莫里斯
- 凯文·波尔森
- 阿德里安·拉莫
- Donncha O’Cearbhaill
- 杰里米·哈蒙德
- 乔治·霍兹
- 古驰法
- 阿尔伯特·冈萨雷斯
- 赫克特·蒙赛格 (萨布)
- 杰克·戴维斯 (绿色雕塑)
- 小丑 (The Jester)
- weev
- 加里·麦金农
- Careto (面具)
- CryptoLocker
- Dexter
- 毒区
- FinFisher
- 火焰
- Gameover ZeuS
- Mahdi
- Metulji僵尸网络
- NSA ANT产品目录
- R2D2
- Shamoon
- Stars
- 震网
- 震荡波蠕虫
- 手机病毒
- 网络战
- 网络恐怖主义
- 黑客行动主义
- 黑客
- 电脑犯罪
- 软件破解
- 高级长期威胁 (APT)
- 零日攻击
- 跳板
- DNS污染
- 缓冲区溢出
- 暴力破解法
- 跨站脚本攻击 (XSS)
- 漏洞利用
- 水坑攻击
- 偷渡式下载
- SQL注入攻击
- 中间人攻击
- 夺旗
- WEB安全的防御--介绍XSS跨网站脚本[wiki]
- [web安全] XSS的防御
- web安全防御--xss
- web安全防御xss
- XSS跨站点脚本的介绍和代码防御
- web安全 之 xss防御
- WEB安全实战(三)XSS 攻击的防御
- WEB安全实战(三)XSS 攻击的防御
- WEB安全实战(三)XSS 攻击的防御
- 网站安全-前端XSS攻击和防御
- WEB网站防御XSS攻击思路和XSS实践
- 0124 WEB安全实战(三)XSS 攻击的防御【基础】
- XSS攻击的介绍及防御
- 跨站脚本攻击(XSS)——常见网站攻击手段原理与防御
- 一个搜索引擎中的反射XSS 预防和防御跨站漏洞 Web安全展望
- Web前端安全——XSS攻击与防御
- [Web安全之实战] 跨站脚本攻击XSS
- Web安全之XSS跨站脚本攻击
- 网页抓取
- VC++中的Error spawning cl.exe
- 关于整形溢出(转载至CollShell)
- 浅谈一个Android程序员需要具备的素养
- 自定义控件之轮播图RollViewPager
- WEB安全的防御--介绍XSS跨网站脚本[wiki]
- 工作中遇到的问题之handler处理机制
- aa
- OSWatch
- iOS第三方开源库
- oracle replace
- Spring:依赖注入(注解方式)
- MVC中一个表单实现多个提交按钮(一个action搞定添删改)
- 【CDH5】-001CentOS6.5 下yum安装PostgreSQL