浏览器工作原理与实践
李兵
前盛大创新院高级研究员
56402 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
浏览器工作原理与实践
15
15
1.0x
00:00/00:00
登录|注册

33 | 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?

示例:Node服务程序演示
案例:喜马拉雅存储型XSS漏洞
生成浮窗广告
修改DOM
监听用户行为
窃取Cookie信息
思考时间
防范策略
XSS攻击的三种模式
使用HttpOnly属性
充分利用CSP
服务器对输入脚本进行过滤或转码
基于DOM的XSS攻击
反射型XSS攻击
存储型XSS攻击
恶意脚本能做的事情
XSS全称是Cross Site Scripting
总结
如何阻止XSS攻击
恶意脚本是怎么注入的
什么是XSS攻击
跨站脚本攻击(XSS)
跨站脚本攻击(XSS)知识关系脑图

该思维导图由 AI 生成,仅供参考

通过上篇文章的介绍,我们知道了同源策略可以隔离各个站点之间的 DOM 交互、页面数据和网络通信,虽然严格的同源策略会带来更多的安全,但是也束缚了 Web。这就需要在安全和自由之间找到一个平衡点,所以我们默认页面中可以引用任意第三方资源,然后又引入 CSP 策略来加以限制;默认 XMLHttpRequest 和 Fetch 不能跨站请求资源,然后又通过 CORS 策略来支持其跨域。
不过支持页面中的第三方资源引用和 CORS 也带来了很多安全问题,其中最典型的就是 XSS 攻击。

什么是 XSS 攻击

XSS 全称是 Cross Site Scripting,为了与“CSS”区分开来,故简称 XSS,翻译过来就是“跨站脚本”。XSS 攻击是指黑客往 HTML 文件中或者 DOM 中注入恶意脚本,从而在用户浏览页面时利用注入的恶意脚本对用户实施攻击的一种手段。
最开始的时候,这种攻击是通过跨域来实现的,所以叫“跨域脚本”。但是发展到现在,往 HTML 文件中注入恶意代码的方式越来越多了,所以是否跨域注入脚本已经不是唯一的注入手段了,但是 XSS 这个名字却一直保留至今。
当页面被注入了恶意 JavaScript 脚本时,浏览器无法区分这些脚本是被恶意注入的还是正常的页面内容,所以恶意注入 JavaScript 脚本也拥有所有的脚本权限。下面我们就来看看,如果页面被注入了恶意 JavaScript 脚本,恶意脚本都能做哪些事情。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了跨站脚本攻击(XSS)的原理、类型和防范措施。XSS攻击通过向HTML文件或DOM中注入恶意脚本,黑客可以窃取用户信息或对用户进行攻击。文章详细介绍了存储型XSS攻击、反射型XSS攻击和基于DOM的XSS攻击,并提出了防范策略。服务器端过滤或转码输入脚本、充分利用CSP策略以及使用HttpOnly属性来保护Cookie信息是有效的防范措施。此外,文章还提到了添加验证码、限制输入长度等策略。总的来说,本文深入浅出地介绍了XSS攻击的原理和防范措施,对于网站开发者和网络安全从业者具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《浏览器工作原理与实践》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(34)

  • 最新
  • 精选
  • mfist
    跨站脚本攻击前端和后端7 3分吧。毕竟是在浏览器上面出了问题,前端怎么解释也是自己的锅。 存储型xss和反射型的xss一个原则不要信任前端的输入,任何前端的输入东西都进行编码。这个地方出了问题后端是有责任的 基于dom的xss,传输过程中被篡改,用https之后会防止全部场景吗?

    作者回复: 不能的,HTTPS只是增加了攻击难度,让攻击者攻击成本和难度提高了。

    2019-10-28
    6
    6
  • 杨越
    内容安全策略( CSP )详细文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP
    2020-03-29
    1
    46
  • Snooker
    除去架构不谈,就产品、后端、前端、测试而言。 产品: 1.业务逻辑层面安全验证,保证即使被攻击也要尽量避免或减少损失,如:资金转出、敏感信息操作(修改登录密码、支付密码)等 后端: 1.存储型和反射性XSS,后端占比较大,考虑到可以通过接口绕过前端,所以内容编码后端处理比较可靠。 2.重点头信息返回httponly,这也需要后端实现 前端: 1.基于 DOM 的 XSS 攻击,CSP等前端技术运用,这边主要是前端 测试: 1.丰富测试框架,正对输入框:长度、类型、是否为空、是否重复、组成范围外,也应了解学习安全性测试:XSS攻击、Sql注入等攻击类型。 总体而言,个人觉得前端在XSS攻击中责任占比不大。
    2020-06-23
    1
    29
  • neohope
    其实对于跨站攻击,前端应该承担的责任并不高,原因如下: 1、前端的JS代码,在提交表单时,处理特殊字符或处理脚本的函数,完全可以被绕过。所以依赖前端代码彻底解决注入问题,本身就是不可能的,无论如何后端要做好 2、可以通过浏览器插件,进行伪装,随意组织想提交的内容,和前端没有关系 3、网站设置、服务器安全策略,应该是网站运维和安全组的事情,和前端关系也不大 4、测试放过安全bug,也有一定责任 5、其实在框架层,已经做了不少这方面的防范,无论是前端还是后端,所以框架组也要负责 6、如果被注入脚本了,要防止脚本运行,让浏览器按text处理而不是脚本处理,这个前端要负责的。但被注入本身后端责任更大,所以相当于前端背锅了。
    2020-07-16
    1
    17
  • 潘启宝
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
    2019-10-21
    10
  • 许童童
    前端首先要能够意识到有这个攻击的可能性,然后配合后端人员把这些漏洞修复上。其次应该加强测试方的渗透测试,重视安全。
    2019-10-19
    8
  • 早起不吃虫
    老师请教一个问题,CSP是可以通过meta标签设置的,如果恶意插入的是关于CSP的meta设置呢?
    2019-10-19
    7
    6
  • 3Spiders
    前端需要负大部分责任,因为如果你只是添加字符串,却使用了添加DOM的操作,这不是给XSS攻击留下机会吗。如果非要添加DOM操作,也应该对script、meta等脚本标签做过滤。至于cookie的窃取,正如老师所说,设置httpOnly就行,我总认为前端操作cookie是一种不安全的手段。
    2019-10-22
    5
    5
  • niexia
    关于 CSP,可以看一下 MDN 的说明 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP
    2019-12-23
    3
  • anthonyliu
    老师!我有个疑问:“黑客拿到了用户 Cookie 信息之后,就可以利用 Cookie 信息在其他机器上登录该用户的账号”。黑客的服务器拿到用户的cookie信息,怎么在黑客的客户端模拟登录了?是cookie中有用户的登录名和密码吗?我觉得这个不太可能。如果这不可能,那是什么情况下,黑客可以通过cookie来登录?
    2021-01-25
    4
    2
收起评论
显示
设置
留言
34
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部