XSS-跨站脚本攻击

XSS

Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者经过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。
为了和 CSS 区分,这里把攻击的第一个字母改为了 X,因而叫作 XSS。
XSS 的本质是:恶意代码未通过滤,与网站正常的代码混在一块儿;浏览器没法分辨哪些脚本是可信的,致使恶意脚本被执行。前端

反射型XSS攻击

当浏览器请求 http://xxx/search?keyword="><script>alert('XSS');</script> 时,服务端会解析出请求参数 keyword,获得 "><script>alert('XSS');</script>,拼接到 HTML 中返回给浏览器。造成了以下的 HTML:浏览器

<div>
  您搜索的关键词是:"><script>sendToMe(document.cookie);</script>
</div>

这样浏览器就会执行咱们注入的恶意代码,咱们诱导他人访问咱们构造的连接,就会把他人访问页面的部分信息发送给个人服务器安全

存储型 XSS 攻击

好比一个网站的文章能够发表评论。
你登陆后获取了cookie而后评论。
而后输入评论内容: 2222<script>alert(XSS)</script>
恶意脚本未经转换,存储到了后台。任何用户访问此页面,都会执行恶意脚本。
致使每一个用户在看这篇文章的时候就都弹出XSS弹框服务器

DOM 型XSS攻击

客户端的脚本程序能够动态地检查和修改页面内容,而不依赖于服务器端的数据。可能引发dom型xss的:使用innerHTML, documen.write属性...
DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其余两种 XSS 都属于服务端的安全漏洞。cookie

<input type="text" id="input">
<button id="btn">Submit</button>
<div id="div"></div>
<script>
    const input = document.getElementById('input');
    const btn = document.getElementById('btn');
    const div = document.getElementById('div');

    let val;
     
    input.addEventListener('change', (e) => {
        val = e.target.value;
    }, false);

    btn.addEventListener('click', () => {
        div.innerHTML = `<a href=${val}>testLink</a>`
    }, false);
</script>

上面若是某个网站有这样的代码咱们能够直接在输入框输入onclick=alert(/xss/)
提交以后,页面代码就变成了:
<a href onlick="alert(/xss/)">testLink</a>dom

如何防护XSS攻击

http://www.javashuo.com/article/p-zwlxplgb-w.htmlxss

相关文章
相关标签/搜索