web 安全
笔记整理
XSS
XSS(Cross Site Script),跨站脚本攻击,因为缩写和CSS(Cascading Style Sheets)重叠,所以只能叫XSS。
XSS的原理是恶意攻击者往Web页面里插入恶意可执行网页脚本代码,浏览器无法分辨哪些是可信脚本,当用户浏览页面时恶意代码被执行,读取 cookie,session tokens,或者其它敏感的网站信息,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。
反射型XSS(非持久型XSS)
通过URL传递参数功能,当用户打开带有恶意脚本代码参数的URL时,恶意代码参数被解析并执行。
特征:
- 即时性,不经过服务器存储,直接通过 HTTP 的 GET 和 POST 请求就能完成一次攻击,拿到用户隐私数据。
- 攻击者需要诱骗点击
- 反馈率低,所以较难发现和响应修复
- 盗取用户敏感保密信息
预防:
- Web 页面渲染的所有内容或者渲染的数据都必须来自于服务端。
- 尽量不要从 URL,document.referrer,document.forms 等这种 DOM API 中获取数据直接渲染。
- 尽量不要使用 eval, new Function(),document.write(),document.writeln(),window.setInterval(),window.setTimeout(),innerHTML,document.creteElement() 等可执行字符串的方法。
- 如果做不到以上几点,也必须对涉及 DOM 渲染的方法传入的字符串参数做 escape 转义。
- 前端渲染的时候对任何的字段都需要做 escape 转义编码。(escape 转义的目的是将一些构成 HTML 标签的元素转义,比如 <,>,空格 等,转义成 <,>, 等显示转义字符。有很多开源的工具可以协助我们做 escape 转义。)