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), 当用户浏览此 ...
随机推荐
- Java之重载(Overload)与重写(Overwrite)总结
内容来源为:<孙卫琴面向对象编程>,本随笔简单总结,具体内容可参见概述第6章,写的挺清晰: 一. 重载(Overload) 1. 有时候类的同一种功能有多种实现方式,到底采用哪种实现方式, ...
- WCF系列教程之WCF服务宿主与WCF服务部署
本文参考自http://www.cnblogs.com/wangweimutou/p/4377062.html,纯属读书笔记,加深记忆. 一.简介 任何一个程序的运行都需要依赖一个确定的进程中,WCF ...
- python-五个面试题
问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...
- .net core 多平台部署
首先下载地址 https://dotnet.microsoft.com/download 下载.net core 和 .net core runtime 然后安装他们 控制台运行项目: 找到你的工 ...
- 解决SSH连接linux时长时间不操作自动断开
最近重装Linux系统,但是这次ssh连接云服务区Linux系统时,经常出现一段时间不操作,连接自动中断,表现为光标还在闪动,但是却无法操作.只好关闭终端,重新连接,很是麻烦. 为此,通过网络查找,找 ...
- C 标准库 - string.h之memcpy使用
memcpy Copy block of memory Copies the values of num bytes from the location pointed to by source di ...
- ubuntu init启动流程
ubuntu的init方式有两种:一种是System V initialization,一种是Upstart.ubuntu6.10以前的版本是第一种方式,之后的版本是第二种方式. 在旧式的System ...
- 手动添加Git Bash到右键菜单
1. 打开注册表. 2. 找到[HKEY_CLASSES_ROOT\Directory\Background]. 3. 在[Background]下如果没有[shell],则右键-新建项[shell] ...
- 以安全模式启动firefox
碰到firefox打开后一直没有响应,解决方法: 以安全模式打开
- tomcat主页打不开,tomcat manager 配置,Failed to start component [StandardEngine[Catalina].
Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Serv]] ...