XSS-跨站脚本攻击

回顾客
• 阅读 1896

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 都属于服务端的安全漏洞。

<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>

如何防御XSS攻击

https://juejin.im/post/5bac9e21f265da0afe62ec1b

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
李志宽 李志宽
4年前
什么是XSS攻击?XSS攻击有哪几种类型?
前言:网络安全攻击方式有很多种,其中包括XSS攻击、SQL注入攻击、URL篡改等。那么XSS攻击到底是什么?XSS攻击有哪几种类型?今天小编为大家讲解一下。  什么是XSS攻击?XSS攻击又称为跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。XSS是一种经常出现在Web应用程序中的计算机安全漏洞,是由于Web应用程序对用户的输入过滤不足而产生的,它
Stella981 Stella981
4年前
Spring Boot XSS 攻击过滤插件使用
XSS是什么XSS(CrossSiteScripting)攻击全称跨站脚本攻击,为了不与CSS(CascadingStyleSheets)名词混淆,故将跨站脚本攻击简称为XSS,XSS是一种常见web安全漏洞,它允许恶意代码植入到提供给其它用户使用的页面中。xss攻击流程!(https:
可莉 可莉
4年前
1006.Web安全攻防靶场之WebGoat – 2
概述由于上一篇文章Web安全攻防靶场之WebGoat1过长,这里分开写后面内容使用CrossSiteScripting(XSS)跨站脚本攻击,跨站脚本分为三类1\.ReflectedXSSInjection反射型xss通过一个链接产生的xss
Stella981 Stella981
4年前
Django自身安全机制
XSS攻击什么是XSS攻击XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(https://www.oschina.net/action/GoT
Stella981 Stella981
4年前
HostOnly Cookie 及Js对cookie操作
HostOnlyCookie要理解HttpOnly的作用,要先弄懂XSS攻击,即跨站脚本攻击,大伙可以Google一下看看XSS到底是什么,来自wikipedia的解释:跨网站脚本(Crosssitescripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。
Wesley13 Wesley13
4年前
信息安全
ylbtech信息安全攻击XSS:XSS/CSS攻击XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、Flash或者甚至是普通的HTML。攻击成功后
欣喜若狂 欣喜若狂
2年前
XSS攻击问题皕杰报表解决方案
XSS表示CrossSiteScripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在XSS攻击中,通过插入恶意脚本,实现对用户游览器的控制。XSS攻击可以分成两种类型:1