XSS防范之Encode(转)
防范XSS有三道防火墙:数据的输入校验,数据输出Encode,浏览器安全(主要就是CSP),这里主要介绍Encode。
#用于XSS防范的Encode
用户防范XSS的Encode主要有三种:HtmlEncode,javascriptEncode,urlEncode。每种encode都有不同的使用场景。
#HtmlEncode
HtmlEncode将一些字符编码为html实体,比如将 < 编码为 < 这样编码会起到什么效果呢?
假设页面代码如下:
<div>${var}</div>
如果var的值被注入了恶意代码 <script>alert(1)</script>,我们知道页面返回的时候会直接弹出一个alert框,而如果对var的值进行htmlEncode后页面代码就变成了:
<div>
<script>alert(1)</script>
</div>
浏览器选后不会弹出alert框,而是将<script>alert(1)</script>显示为纯字符。
数据在标签或属性中输出时使用。
#javascriptEncode
使用“\”对特殊字符进行转义,除数字,字母之外,小于127的字符编码使用16进制“\xHH”的方式进行编码,大于127用unicode。
假设页面中有如下脚本片段:
<script>
var j="${var}"
</script>
假设var被恶意注入为 ";alert(1);//
<script>
var j="";alert(1);//
</script>
这样页面又会弹出一个alert框,而如果对 ";alert(1);// 进行javascriptEncode,则变为下面这样,不会产生注入影响
<script>
var j="\"\x3balert\x281\x29\x3b\x2F\x2F"
</script>
数据在脚本中输出或者在事件中输出时要使用javascriptEncode
#urlEncode
urlEncode可以对中文以及特殊字符进行编码,数据在url类型输出时要使用urlEncode,比如href,src
www.abc.com?name=<script>alert('钓鱼岛')</script>
对上面这句urlEncode之后就变成了:
www.abc.com%3fname%3d%3cscript%3ealert(%27%e9%92%93%e9%b1%bc%e5%b2%9b%27)%3c%2fscript%3e
#为何Encode可以起作用?
htmlEncode可以防止恶意的标签闭合
JavaScriptEncode可以防止引号闭合
urlEncode可以防止标签闭合同时支持中文输入
XSS防范之Encode(转)的更多相关文章
- 【超精简JS模版库/前端模板库】原理简析 和 XSS防范
使用jsp.php.asp或者后来的struts等等的朋友,不一定知道什么是模版,但一定很清楚这样的开发方式: <div class="m-carousel"> < ...
- XSS 防范XSS 攻击的措施
XssSniper--0KEE TEAM XssSniper--0KEE TEAM XssSniper 扩展介绍 一直以来,隐式输出的DomXSS漏洞难以被传统的扫描工具发 ...
- jsonp接口的xss防范
防范方式也很简单,只要在header里输出类型设置为javascript即可: 1 header('Content-type: text/javascript;charset=utf-8');
- XSS原理及防范
Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意html标签或者javascript代码.比如:攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cook ...
- CSRF与XSS攻击的原理与防范
CSRF 1.概念与原理 CSRF,跨站请求伪造,攻击方伪装用户身份发送请求从而窃取信息或者破坏系统.例如: 用户访问A网站登陆并生成了cookie,再访问B网站,如果A网站存在CSRF漏洞,此时B网 ...
- ASP.NET MVC防范CSRF最佳实践
XSS与CSRF 哈哈,有点标题党,但我保证这篇文章跟别的不太一样. 我认为,网站安全的基础有三块: 防范中间人攻击 防范XSS 防范CSRF 注意,我讲的是基础,如果更高级点的话可以考虑防范机器人刷 ...
- 转Web安全测试之XSS
转http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html XSS 全称(Cross Site Scripting) 跨站脚本攻击 ...
- xss之全面剖析
XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...
- Web安全测试之XSS
Web安全测试之XSS XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此 ...
随机推荐
- 对 云寻觅贴吧(http://tieba.yunxunmi.com/)的简要分析
1. 云寻觅的用户需求:一方面是很多用户有很多问题,需要高质量的答案,但是搜索引擎无法满足这种需求,百度知道做得不够好,所以用户需要一个平台可以解决他们的问题:另外一方面,又有很多经济良好,时间较为充 ...
- Webapps初步_认识HTTP例子程序读取
package servlet_01; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io. ...
- windows 3389 远程
3389常用命令: 1.查询终端端口 REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinSt ...
- python-pymongo使用
#-*- coding: utf-8 -*- #python2.7x from pymongo import MongoClient def get_db(): #建立连接 client = Mong ...
- JavaScript数据结构-7.链表
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Hibernate5.1+Sqlserver2000分页查询
前几天改到一个bug:从MS SQLserver上面同步表结构并且采集数据写入其他库.然后用的核心技术是用的Hibernate. 其中bug出在SQLServer2000版本上.排查下来发现2000版 ...
- minStack实现
设计包含 min 函数的栈(栈)定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素.要求函数 min.push 以及 pop 的时间复杂度都是 O(1). #include <a ...
- 欢迎来到GIS思考者的博客www.gisthinker.com
我是一名GIS爱好者,这是我的个人博客,欢迎点击: GIS思考者:www.gisthinker.com
- RabbitMQ---1、安装与部署
一.下载资源 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang.(在官网自行选择版本) 1.otp_win64_20.2.exe 下载地 ...
- C# 之多线程(一)
概述: 1.进程:是操作系统结构的基础:是一个正在执行的程序:计算机中正在运行的程序实例:可以分配给处理器并由处理器执行的一个实体:由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单 ...