XSS攻击(出现的原因、预防措施......)

       验证XSS攻击重点不是去查找可输入哪些内容会出现什么样的bug就是测试XSS攻击,重点是了解它出现的原理,为什么会出现XSS攻击,导致一些问题出现?如何防御与解决XSS攻击?以下我将简单介绍以上提出的问题。

如何判定没有被XSS注入?

  我在数据交互的地方输入什么内容,则我输入的内容被实际展示出来,这样我们才认为没有被XSS注入。

 

XSS是什么?

  XSS(Cross Site Scripting),即跨站脚本攻击,是一种常见于web application中的计算机安全漏洞。XSS通过在用户端注入恶意的可运行脚本,若服务器端对用户输入不进行处理,直接将用户输入输出到浏览器,则浏览器将会执行用户注入的脚本。

 

XSS的分类?

  1.非持久型,也叫反射型XSS。通过GET和POST方法,向服务器端输入数据。用户输入的数据通常被放置在URL的query string中,或者是form 数据中。如果服务器端对输入的数据不进行过滤,验证或编码,就直接将用户输入的信息直接呈现给客户,则可能会造成反射型XSS。

  2.持久型,也叫存储型XSS。通常是因为服务器端将用户输入的恶意脚本没有通过验证就直接存储在数据库,并且每次通过调用数据库的方式,将数据呈现在浏览器上。则该XSS跨站脚本攻击将一直存在。若其他用户访问该页面,则恶意脚本就会被触发,用于盗取其他用户的私人信息。

 

XSS的原理分析与解刨:

  详见这篇文章:http://www.freebuf.com/articles/web/40520.html

 

XSS常见漏洞出现的地方:

  数据交互的地方:

    -get post cookies headers

    -反馈与浏览

    -富文本编辑器

    -各类标签插入和自定义

  数据输出的地方:

    -用户资料

    -关键词、标签、说明

    -文件上传

 

XSS的验证方式,以下的验证均可说明当前可被XSS注入:

  APP中涉及到H5的页面,在可输入框输入以下内容:

  正常的页面如下截图:

    

  1、在交互页面输入:<script> var valtest='{$dd}';</script>,页面的编辑按钮消失,且出现了\N,截图显示如下:

    

  2、在交互页面输入<script>alert('xss')</script> 漏洞代码,查看是否出现弹框中显示出xss

  3、在交互页面输入<span class="www"><script>alert(1)</script></span>,仍查看是否出现弹框。

 

XSS出现的原因?

  在HTML中常用到字符实体,将常用到的字符实体没有进行转译,导致完整的标签出现,在可输入的文本框等某些区域内输入特定的某些标签导致代码被恶意篡改。

 

XSS的解决与防御措施?

  服务器都会将JavaScript当做文本处理,在服务端整合进HTML文档中,在浏览器解析这些文本的过程,也就是XSS被执行的时候,所以主要的防御措施就是对任何用户提交到服务器上的文本都要经过编码或者转译

  1、常见的HTML中有用的字符实体如下截图:

    

  2、以下的截图中可以看到已解决了XSS的注入,因此可以看到输入的内容被实际展示了出来。详见示例如下:

       

    我们对当前输入的文本框内容查看,实际它已对输入的标签进行了转译,因此输入的内容才可被实际展示出来,查看方式可通过将此页面分享到微信、QQ等,用google Chrome打开,右键鼠标,查看“显示网页源代码”。

      

 

  

  

 

转载于:https://www.cnblogs.com/syw20170419/p/8639246.html

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

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

相关文章

一幅长文细学JavaScript(三)——DOM

文章目录3 JavaScript DOM3.1 DOM基本术语DOM模型及其作用文档对象模型节点节点的属性文档对象3.2 DOM文档操作3.2.1 查找网页元素3.2.2 获取元素内容新的策略——修改样式更好的策略——修改样式3.2.3 改变元素内容3.2.4 操作网页元素3.2.5 获取元素偏移offset和style的区别3.…

2016国内移动广告平台排行榜

为什么80%的码农都做不了架构师&#xff1f;>>> 移动营销的发展可追溯至第一台便携式手机的诞生&#xff0c;并随着移动终端的更新迭代和广告技术的发展创新&#xff1b;随着移动互联网的技术与商业模式的迅速发展&#xff0c;移动营销领域面临着种种创新与改革&am…

Planning Strategy 和Requirement type的思考

Planning Strategy 和 requirement type的联系 1. 当需要对一个material进行计划的时候 &#xff0c;我们会自然的考虑到plant的 production方式 ( MTO production or MTS production) ,如果能确定下来是MTO 还是MTS 的方式 &#xff0c; 那就可以确定了计划策略的选择 。 而计…

【摄影】田子坊

图片发自简书App图片发自简书App图片发自简书App图片发自简书App图片发自简书App图片发自简书App图片发自简书App图片发自简书App转载于:https://www.cnblogs.com/wangting888/p/9701627.html

selenium RC 环境配置

在网上搜索了许久&#xff0c;没找到有具体的配置&#xff0c;只是简单了写了几个步骤&#xff0c;自己琢磨了一下&#xff0c;于是&#xff0c;就想整理一篇文章&#xff0c;便于以后温习。 本文是参照官网的步骤进行了&#xff0c;当然了&#xff0c;也不完成相同。在这里我要…

一幅长文细学GaussDB(二)——数据库基础知识

文章目录2 数据库基础知识2.1 数据库管理简介数据库管理数据库管理工作范围对象管理制定数据库对象命名规范备份和恢复灾难恢复备份方式数据库安装数据库卸载数据库迁移数据库扩容例行维护工作2.2 数据库重要概念数据库和数据库实例数据库连接和会话数据库连接池模式表空间表数…

hive如何处理not in和in的问题

2019独角兽企业重金招聘Python工程师标准>>> 首先我们先创建两个表和测试数据。建表语句如下&#xff1a; create table table1(uid STRING, dayTimes BIGINT) PARTITIONED BY (dt STRING); create table table2(uid STRING, monTimes BIGINT) PARTITIONED BY (dt S…

一幅长文细学GaussDB(三)——SQL语法

文章目录3 SQL语法3.1 SQL语句概述SQL语句介绍SQL语句分类3.2 数据类型常用数据类型非常用数据类型3.3 系统函数概述数值计算函数字符处理函数时间日期函数类型转换函数系统信息函数3.4 操作符概述逻辑操作符比较操作符算术操作符测试操作符其他操作符3 SQL语法 华为GaussDB(f…

从网络获取数据显示到TableViewCell容易犯的错

2019独角兽企业重金招聘Python工程师标准>>> 昨晚第一次做用网络接口获取的数据&#xff0c;显示到自己的cell上&#xff0c;犯了很多的错&#xff0c; 总结如下&#xff1b; 1.数据源数组必须首先初始化&#xff0c;一般使用的是懒加载&#xff1b; 2.异步获取网络…

第二学期-第一次作业

1-1. 计算两数的和与差 1.设计思路 第一步&#xff1a;设出被调用函数 op1, op2, *psum, *pdiff &#xff0c;利用被调函数计算*psum的值和*pdiff的值&#xff1b; 第二步&#xff1a;代入到主函数就是计算a、b的和与差&#xff1b; 第三部&#xff1a;对所得到数值进行输出&a…

一幅长文细学华为MRS大数据开发(三)——Hive

文章目录3 HIVE3.1 Hive概述Hive简介Hive应用场景Hive与传统数据仓库比较Hive优点3.2 Hive功能及架构Hive运行流程Hive数据存储模型Hive数据存储模型-分区和分桶Hive数据存储模型-托管表和外部表Hive支持的函数3.3 Hive基本操作Hive使用DDL操作DML操作DQL操作3 HIVE Apache Hi…

Huffman树进行编码和译码

//编码 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<queue> #include<fstream> #include<map> using namespace std;typedef struct HuffmanNode{int w;//节点…

一幅长文细学JavaScript(五)——ES6-ES11新特性

5 ES版本 摘要 ES5的先天不足致使ES后续版本的发展&#xff0c;这也是前端人员绕不开的一个点。如果我们想要在工作和面试中轻松解决问题&#xff0c;那么了解ES6-ES11是必不可少的。 在本文中&#xff0c;我将采用一种更加通俗的方式来讲述这一块知识点&#xff0c;而不是照搬…

一幅长文细学Vue(一)——Webpack打包工具

1 项目开发工具 摘要 ​ 在本文中&#xff0c;我们会详细讨论webpack是如何打包发布项目&#xff0c;不过对于Vue来说&#xff0c;Vite可以做到和webpack一样的功能。 声明&#xff1a;如果想要看懂此文章&#xff0c;需具备node.js中npm的知识。 作者&#xff1a;来自ArimaMis…

I00005 打印直角三角形字符图案

曾经的计算机&#xff0c;没有显示屏&#xff0c;人们操作计算机时&#xff0c;用打印机记录执行的操作命令。 后来有了显示屏&#xff0c;不过最初的显示屏是字符频幕&#xff0c;输出只能是字符。 即使是今日&#xff0c;计算机已经进入多窗口图形界面时代&#xff0c;有时程…

动态数组使用

1 #include<stdio.h>2 #include<stdlib.h>3 4 int main()5 {6 int i;7 int n; //用于记录输入的整数的个数 8 int *p; //用于指向动态数组的存储空间 9 int sum0,average; //用于记录输入的整数的和与平均值 10 11 scanf("%d"…

Linux下安装Redis及搭建主从

Linux下安装Redis 首先在官网下载对应版本的redis包&#xff0c;这里本人使用的是redis-4.0.8.tar.gz。然后在服务器中存放redis包的路径下执行tar –vxf redis-4.0.8.tar.gz&#xff08;这里对应下载的包&#xff09;&#xff0c;解压redis后,cd 进入 redis-4.0.8&#xff08;…

图解安装CentOS 6.6

以下是在虚拟机上安装CentOS 6.6的过程。一、安装文件:CentOS-6.6-x86_64-bin-DVD.iso二、安装步骤# 虚拟机的配置这里省略&#xff0c;在百度上有很多帖子可以参考。开启虚拟机进入安装界面&#xff0c;如下图所示选择第一个选项&#xff0c;按Enter安装程序加载完后&#xff…

一幅长文细学Vue(三)——组件基础(上)

3 组件基础&#xff08;上&#xff09; 摘要 ​ 在本文中&#xff0c;我们将学习什么是SPA&#xff0c;以及Vue中组件的基本使用。 声明&#xff1a;为了文章的清爽性&#xff0c;在文章内部的代码演示中只会附上部分演示代码&#xff0c;main.js文件的代码通常不贴出&#xff…

综合练习:词频统计

下载一首英文的歌词或文章 将所有,.&#xff1f;&#xff01;’:等分隔符全部替换为空格 将所有大写转换为小写 生成单词列表 fopen(news.txt,r) newsf.read() f.close() sep,.!"?: for c in sep:newsnews.replace(c, )wordListnews.lower().split()for w in wordList:pr…