阻止攻击的常用方法是:在将HTML返回给Web浏览器之前,对攻击者输入的HTML进行编码。HTML编码使用一些没有特定HTML意义的字符来代替那些标记字符(如尖括号)。这些替代字符不会影响文本在web浏览器上的显示方式,仅仅用于阻止HTML渲染引擎将数据识别成HTML标记。这种方法能阻止一些XSS攻击,但是以下几种情况例外:

在Script块中插入:

<script>
...
var strEmailAdd = 'attacker data';
...
</script>

在这个例子中,数据本身就已经在script块中了,攻击者要做的就是关闭引用标记。

...
var strEmailAdd = '';alert('Hi');//
...

引号加分号结束,最后可以注释掉其他输出内容避免出现阻止脚本运行的语法错误。

使用事件:

在HTML中,标记的属性能够被封装在单引号和双引号中,或者不需要引号。如果HTML的设计人员没有使用双引号来封装属性值,并对用户的数据进行了HTML编码,那么,这些不可信的数据会被限制在标记的范围内,而不是限制在属性的范围内。大部分的标记有事件发生的时候,用户定义的与那个事件相关联的脚本就会运行。

如果不可信数据经过HTML编码,并且在HTML中返回如下内容的时候,脚本仍然能够运行:

<INPUT name="txtinput" type="text" value='unTrustData'>

如果 OurData' onclick=alert(Hi) junk=' 作为不可信数据发送,将会返回如下所示HTML:

<INPUT name="txtinput" type="text" value=' OurData' onclick=alert('Hi') junk=''>

当用户单击文本框时,onclick事件就被激发了,脚本就会运行。

使用Style:

Style中的表达式能够被用来运行任意脚本,例如:

<INPUT name="txtinput" type="text" value="SomeValue" style="font-family:expression(alert('Hi'))">

脚本协议:

通过IMG标记中src属性值的形式,将它们返回。

<IMG src="untrusted data">

 两种不同过滤的例子:

1.在返回数据前,删除输入中的字符串。但是如果输入scriscriptpt,删除后剩下的就是script。

2.通过转义来阻止分隔属性。

深入理解浏览器中的解析器:在<script>和</script>之间的任何东西都会被当作脚本,并对它们进行语法检查。

<script>
var strMyVar = '</script><script>alert('快船总冠军')</script>';
...
</script>

浏览器会把上述内容解释为两个<script>块,第一个块有语法错误,并且不会运行。但是第二个块语法正确会运行。

 

绕过用编码方式阻止XSS攻击的几个例子的更多相关文章

  1. WEB安全测试之XSS攻击

    目录结构 1.背景知识 2.XSS漏洞的分类 3.XSS防御 4.如何测试XSS漏洞 5.HTML Encode 6.浏览器中的XSS过滤器 7.ASP.NET中的XSS安全机制 一.背景知识 1.什 ...

  2. XSS 攻击的防御

    xss攻击预防,网上有很多介绍,发现很多都是只能预防GET方式请求的xss攻击,并不能预防POST方式的xss攻击.主要是由于POST方式的参数只能用流的方式读取,且只能读取一次,经过多次尝试,自己总 ...

  3. 使用 PHP 构建的 Web 应用如何避免 XSS 攻击

    本文首先简单介绍开发测试人员如何对 Web 应用进行 XSS 漏洞测试,如何借助工具绕过客户端 JavaScript 校验输入恶意数据:然后针对使用 PHP 语言构建的 Web 站点,从在输出端对动态 ...

  4. [oldboy-django][2深入django]xss攻击 + csrf

    1 xss攻击 xss攻击(跨站脚本攻击,用户页面提交数据来盗取cookie) - 慎用safe, 和mark_safe -- 如果要用,必须要过滤 - 定义: 用户提交内容,在页面展示用html显示 ...

  5. web安全之XSS攻击原理及防范

    阅读目录 一:什么是XSS攻击? 二:反射型XSS 三:存储型XSS 四:DOM-based型XSS 五:SQL注入 六:XSS如何防范? 1. cookie安全策略 2. X-XSS-Protect ...

  6. WEB安全实战(二)带你认识 XSS 攻击

    前言 上一篇文章写了关于 WEB 安全方面的实战,主要是解决 SQL 盲注的安全漏洞.这篇文章本来是要写一篇关于怎样防治 XSS 攻击的,可是想来想去,还是决定先从理论上认识一下 XSS 吧.下一篇文 ...

  7. 跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击

    跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击 一.总结 一句话总结:比如用户留言功能,用户留言中写的是网页可执行代码,例如js代码,然后这段代码在可看到这段留言的不同一户的显示上就会 ...

  8. [BUGCASE]CI框架的post方法对url做了防xss攻击的处理引发的文件编码错误

    一.问题描述 出现问题的链接: http://adm.apply.wechat.com/admin/index.php/order/detail?country=others&st=1& ...

  9. WEB安全实战(五)XSS 攻击的第二种解决方式(推荐)

    序 说到 XSS 攻击,前边已经有两篇文章在讲这个事了,这次又拿出来说,主要是针对近期工作中的一些新的问题.那么之前是怎么解决问题的呢?为什么又要换解决方式?以下就具体的跟大家分享一下. 旧方案 公司 ...

随机推荐

  1. idea 断点上面有x

    背景:确定你的java代码没有问题,并且编译通过 问题:debug 启动项目的时候没有问题,idea打断点的时候左边红色断点上面有x 原因:java文件和class文件不一致, 解决方法:ant cl ...

  2. 阿里八八Alpha阶段Scrum(8/12)

    今日进度 叶文滔: 已经成功解决兼容性问题,目前正在嵌入多级按钮API,预计明天可以完成 王国超: 今天终于debug了,被卡了几天的fragment嵌套listview终于成功了 俞鋆: 研究了一下 ...

  3. Django商城项目笔记No.1项目准备工作

    Django商城项目笔记No.1项目准备工作 一.本项目商城属于B2C商业模式 二.项目采用前后端分离的应用模式 前端使用Vue.js 后端使用Django REST framework 1.创建gi ...

  4. 2.Dubbo2.5.3注册中心和监控中心部署

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.注册中心Zookeeper安装 (1)搭建要求 zk服务器集群规模不小于3个节点要求各服务器之间系统时间要 ...

  5. 笔记一:CSS选择器

    0.前言:无论学什么,前端都是绕不开的一门技术,对于不同的人需求不同,作为一个python开发者不仅需要能读懂基本的html/css以及js代码,还要会使用它的常用的标签,以及了解比较有用的标签,把逻 ...

  6. Python2.7-fractions

    fractions 模块,提供分数格式存储数据,没多大用处,除了模块里的最大公约数函数 gcd(a,b) 模块类和方法: fractions.Fraction(numerator=0, denomin ...

  7. 将如下三组不同类型的数据利用DataInputStream和DataOutputStream写入文件,然后从文件中读出

    三组数据如下: {19.99 , 9.99 , 15.99 , 3.99 , 4.99} {12 , 8 , 13 ,29 ,50} {"Java T-shirt" , " ...

  8. 转自:strcmp函数实现及详解

    strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下:int strcmp(constchar*str1,constchar*str2);其中str1和st ...

  9. 数据预取 __builtin_prefetch()

    __builtin_prefetch() 是 gcc 的一个内置函数.它通过对数据手工预取的方法,减少了读取延迟,从而提高了性能,但该函数也需要 CPU 的支持. 该函数的原型为: void __bu ...

  10. AbelSu教你搭建go语言开发环境

    go语言官网:https://golang.org/ windows:官网下载go1.6.windows-amd64.msi安装文件,安装位置选择默认C:\Go\安装结束后配置环境变量Path: C: ...