什么是xss攻击?
XSS又叫CSS(Cross Site Script),跨站脚本攻击:指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
那么,当当前的网页弹出1的时候,我们就知道,这个网页是可以执行js脚本的了,那么我们是不是就可以通过document去盗取一些信息,来帮助我们更进一步的去潜入进去呢?例如盗取一下cookie等。
先来看一下XSS有几种吧:
持久型:一些可以提交的地方,文章评论,个人信息填写等,如果没有加过滤的话,嵌入的脚本就会被提交到服务器上,之后用户每次访问都会触发脚本(例如图中的alert(1),每个用户打开都会弹出1)
非持久型:反射型跨站脚本漏洞,是最普遍的类型。大多是链接的方式,需要用户点击,才能返回脚本进行操作(用户访问服务器-->点击跨站链接--->返回脚本代码)
DOM型:客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞(很少见emm,反正我没见过hhh,日后见到了来补上,再细说)
XSS可能会带来的危害
使网页无法正常运行:这个就是我们上面中图示的内容,如果不仅仅是一个alert(1)呢?外部来一个永久循环,这个网页的弹窗就会永远关不掉,导致无法正常的实现整体业务流程。
获取cookie信息:这个我们也在上文中说过,如果网页上可以执行js脚本的话,那么我们是可以通过document.cookie来实现获取用户cookie的。
试想下如果像QQ空间说说中能够写入xss攻击语句,那岂不是看了你说说的人的号你都可以登录。
劫持流量恶意跳转:像这样,在网页中想办法插入一句像这样的语句,访问的网页就会直接跳转到百度去。
<script>window.location.href="http://www.baidu.com";</script>
XSS的攻击应该具备这样的条件
网页内部有输入框,内容可存储在服务器上
输入框内的内容,才能被提交到他的服务器上,才能改变这个网页内部的文件内容。
前提是这个输入,没有被过滤,才会成功哦!
可以自己写demo尝试一下,不建议直接在网络上开搞emm,自己玩玩就行哈~
XSS防御措施(对用户输入内容和服务端返回内容进行过滤和转译)
现代大部分浏览器都自带 XSS 筛选器(vue/react等主流框架已经避免类似问题,vue举例:不能在template中写script标签,无法在js中通过ref或append等方式动态改变或添加script标签)
过滤:对诸如script、img、a等标签进行过滤。
编码:像一些常见的符号,如<>在输入的时候要对其进行转换编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。
最后,学习网络安全是为了保护好自己,在这个网络时代,避免自己的信息被不法分子盗取,而不是说我们学会如何去攻击别人。
更多关于网络安全培训的问题,欢迎咨询千锋教育在线名师。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。