跨站脚本攻击(XSS)

什么是 XSS 攻击

    XSS(Cross Site Scripting),为了与 CSS 区分开来,简称 XSS,就是 跨站脚本

    XSS 攻击是指黑客往 HTML 文件中或者 DOM 中 注入恶意脚本,当 用户浏览页面时利用注入的恶意脚本对用户实施攻击的⼀种手段。

XSS 有哪些的危害

        1. 窃取 cookie 信息

            恶意的 JS 可以通过 document.cookie 获取 Cookie 信息,然后通过 XMLHttpRequest 或者 Fetch 加上 CORS 功能将数据发送给恶意服务器;恶意服务器拿到用户的 Cookie 信息之后,就可以在其他电脑上模拟用户的登录,然后进行恶意等操作;

        2. 监听用户行为

            可以通过 addEventListener 事件 监听键盘事件, 比如 input 框的输入 获取账号或者密码 等私密信息,然后发送给 黑客,之后 就能拿到这些私密信息做违法的事情。

        3. 修改 DOM 伪造登陆窗口,用来欺骗用户输入私密信息

            通过 Dom 的基本操作,伪造一些输入私密信息的窗口诱导用户输入,比如 js 脚本 document.createElement ,appendChild 等 伪造 input 输入框,注入当前页面。

        4. 在页面生成浮窗广告,影响用户体验


XSS 是如何注入的

    1. 存储型 XSS 攻击

      页面注入JS脚本,所有和用户交互的地方(永远不要相信用户的输入),比如评论区(所有的 input 标签),写 script 标签 。

        攻击步骤如下:

            1. 黑客利用站点漏洞将⼀段恶意 JavaScript 代码提交到网站的数据库中;

                比如 在评论区 input 中输入 <script>alert(1)</script>,后台将这段代码保存到数据库中;

            2. 其他用户浏览了包含了恶意 JavaScript 脚本的页面,恶意脚本就会将用户的Cookie信息等数据上传到服务器。

                上面的例子中 其他用户 看到了这条评论 都会 执行 这个 alert 操作。

存储型 XSS 攻击

    2. 反射型 XSS 攻击

        反射型 XSS 攻击 常见于 一些 诱导用户点击的 恶意链接。

        Web 服务器不会存储反射型 XSS 攻击的恶意脚本,这是和存储型 XSS 攻击不同的地方

        攻击步骤如下:

            1.  黑客通过 诱导用户去点击 恶意链接,这些 恶意链接 通过 URL 的方式 传递给了 服务器;

                比如 用户点击 http://localhost:3000/?xss==<script>alert('你被xss攻击了')</script>

            2. 服务器接收到请求,把 不加处理的把脚本 反射给了 浏览器端,使访问者的浏览器执行相应的脚本

                反射型 XSS 的触发有后端的参与,要避免反射性 XSS,必须需要后端的协调,后端解析前端的数据时首先做相关的字串检测和转义处理。

反射型 XSS

        比如 用户 访问 一个 恶意链接 http://localhost:3000/error?type=<script>alert('恶意内容')</script>

        后台 nodejs 会把 用户传递给后台的 type 参数 不经处理的直接返回前端,这样就执行了<script>alert('恶意内容')</script>,这个脚本就会执行相应的逻辑。

        app.get('/error',function(req,res){

            res.send(`${req.query.type}`); //拿到 url 上的 type 参数,并返回给前端   

        });

        这些还是 黑客 抓住了 网站的一些漏洞,做出的 恶意链接,如果自己做的网站处理了相应的处理,那么就没有给黑客机会钻这个漏洞。

    3. 基于 DOM 的 XSS 攻击

        基于 DOM 的 XSS 攻击是不牵涉到页面 Web 服务器的。具体来讲,黑客通过各种手段将恶意脚本注入用户的页面中,比如通过网络劫持在页面传输过程中修改 HTML 页⾯的内容,这种劫持类型很多,有通过 WiFi 路由器劫持的,有通过本地恶意软件来劫持的,它们的共同点是在 Web 资源传输过程或者在用户使用页面的过程中修改 Web 页面的数据。


预防措施

    1. 服务器对输入脚本进行过滤或转码

        转义字符&、<、>、",'

转移字符

    2. CSP 内容安全策略

        CSP 的作用: 1. 限制资源获取(可以设置禁止外链的资源,只能获取本站的资源);2. 禁止向第三方域提交数据,这样用户数据也不会外泄;3. 禁止执行内联脚本和未授权的脚本;4. 报告资源获取越权,这样可以帮助我们尽快发现有哪些XSS攻击,以便尽快修复问题。

        限制方式

            default-src 限制全局

            制定资源类型:connect-src、img-src、media-src.........

            头部设置 'Content-Security-Policy':default-src 'self';......

            MDN CSP

    3. HttpOnly

            很多 XSS 攻击 是为了 盗取 Cookie 的, 因此可以通过 使用 HttpOnly 属性来保护我们的 Cookie。HttpOnly 的作用是禁止使用 JS 来获取 Cookie, 只能在 Http 请求过程中使用。


        React、Vue等框架都从框架层面引入了 XSS 防御机制,React DOM 在渲染所有输入内容之前,默认会进行转义。它可以确保在你的应用中,永远不会注入那些并非自己明确编写的内容。所有的内容在渲染之前都被转换成了字符串。

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

推荐阅读更多精彩内容