当前位置:网站首页>面试官:说说XSS攻击是什么?
面试官:说说XSS攻击是什么?
2022-07-04 20:34:00 【Ss、、帅海】
1 什么是XSS攻击?
xss全称是(cross site scripting (即跨站脚本),为了和CSS区分,故叫它xss。XSS 攻击是指浏览器中执行恶意脚本(无论是跨域还是同域),从而拿到用户的信息并进行操作。
这些操作一般可以完成下面这些事情:
- 窃取cookie。
- 监听用户行为,比如输入账号密码后直接发送到黑客服务器。
- 修改DOM伪造登录表单。
- 在页面中生成浮窗广告。
通常情况,XSS攻击的实现有三种方式―—存储型、反射型和文档型。原理都比较简单,先来—一介绍一下。
(1)存储型
存储型,顾名思义就是将恶意脚本存储了起来,确实,存储型的XSS将脚本存储到了服务端的数据库,然后在客户端执行这些脚本,从而达到攻击的效果。
常见的场景是留言评论区提交一段脚本代码,如果前后端没有做好转义的工作,那评论内容存到了数据库,在页面渲染过程中直接执行,相当于执行一段未知逻辑的JS代码,是非常恐怖的。这就是存储型的XSS 攻击。
(2)反射型
反射型XSS指的是恶意脚本作为网络请求的一部分。
比如我输入:
http://sanyuan.com?q=<script>alert("你完蛋了")</script>
这样,在服务器端会拿到q参数,然后将内容返回给浏览器端,浏览器将这些内容作为HTML的一部分解析,发现是一个脚本,直接执行,这样就被攻击了。
之所以叫它反射型,是因为恶意脚本是通过作为网络请求的参数,经过服务器,然后再反射到HTML文档中,执行解析。和存储型不一样的是,服务器并不会存储这些恶意脚本。
(3)文档型
文档型的XSS攻击并不会经过服务端,而是作为中间人的角色,在数据传输过程劫持到网络数据包,然后修改里面的html文档!
这样的劫持方式包括WIFI路由器劫持或者本地恶意软件等。
二 防范措施
明白了三种XSS攻击的原理,我们能发现一个共同点;都是让恶意脚本直接能在浏览器中执行。
那么要防范它,就是要避免这些脚本代码的执行。
为了完成这一点,必须做到一个信念,两个利用。
(1)一个信念
千万不要相信任何用户的输入!
无论是在前端和服务端,都要对用户的输入进行转码或者过滤。
比如
<script>alert('你完蛋了')</script>
转码后变为:
<script>alert('你完蛋了')</script>
(2)利用CSP
CSP,即浏览器中的内容安全策略,它的核心思想就是服务器决定浏览器加载哪些资源,具体来说可以完成以下功能:
- 限制其他域下的资源加载。
- 禁止向其它域提交数据。
- 提供上报机制,能帮助我们及时发现XSS攻击。
(4)利用HttpOnly
很多XSS攻击脚本都是用来窃取Cookie,而设置Cookie的HttpOnly属性后,JavaScript便无法读取Cookie的值。这样也能很好的防范XSS 攻击。
总结
XSS攻击是指浏览器中执行恶意脚本,然后拿到用户的信息进行操作。主要分为存储型、(反射型和文档型。防范的措施包括:
- 一个信念:不要相信用户的输入,对输入内容转码或者过滤,让其不可执行。·
- 两个利用:利用CSP,利用Cookie的 HttpOnly 属性。
边栏推荐
- Daily question-leetcode556-next larger element iii-string-double pointer-next_ permutation
- 华为模拟器ensp的路由配置以及连通测试
- redis RDB AOF
- B站视频 声音很小——解决办法
- 【微服务|SCG】Predicate的使用
- Billions of citizens' information has been leaked! Is there any "rescue" for data security on the public cloud?
- SolidWorks工程图添加材料明细表的操作
- Liu Jincheng won the 2022 China e-commerce industry innovation Figure Award
- redis03——Redis的网络配置与心跳机制
- [buuctf.reverse] 151_ [FlareOn6]DnsChess
猜你喜欢
随机推荐
Render function and virtual DOM
奋斗正当时,城链科技战略峰会广州站圆满召开
Hwinfo hardware detection tool v7.26 green version
VIM asynchronous problem
async await 在map中使用
每日一题-LeetCode556-下一个更大元素III-字符串-双指针-next_permutation
杰理之AD 系列 MIDI 功能说明【篇】
福昕PDF编辑器v10.1.8绿色版
Jerry's ad series MIDI function description [chapter]
Jerry's ad series MIDI function description [chapter]
每日一题-LeetCode1200-最小绝对差-数组-排序
华为ensp模拟器实现通信安全(交换机)
__ init__ () missing 2 required positive arguments
Huawei ENSP simulator enables devices of multiple routers to access each other
torch.tensor和torch.Tensor的区别
Redis pipeline
D3.js+Three.js数据可视化3d地球js特效
js 3D爆炸碎片图片切换js特效
【optimtool.unconstrain】无约束优化工具箱
redis RDB AOF