阻止攻击的常用方法是:在将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. Linux 出现 E325:ATTENTION swap

    当用vim打开一个文件的时候,系统提示:E325:ATTENTION Found a swap by the name ".a.swp" owned by:…… …… 这是由于在编 ...

  2. mariadb使用\s查看用户权限

    今天出现一个问题就是:给zabbix用户赋予权限 语句如下: grant all on zabbix.* to 'zabbix'@'%' identified by 'zabbix' 按照这样的说法应 ...

  3. [技术] OIer的C++标准库 : 字符串库

    引入 上次我在博客里介绍了OI中可能用到的STL中的功能, 今天我们接着来发掘C++标准库中能为OI所用的部分. 点击传送至我的上一篇系列博文 众所周知, OI中经常用到字符串相关的处理, 这时善用字 ...

  4. 微信小程序点击 navigator ,页面不跳转

    1.navigator 对应的 url 必须配置在app.json的pages中: 2.navigator 对应的 url 不能配置在"tabBar"的"list&quo ...

  5. Python3中遇到UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128)

    在 linux服务器上运行代码报错: Python3中遇到UnicodeEncodeError: ‘ascii’ codec can’t encode characters in ordinal no ...

  6. Python基础5

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  7. CentOS下iptables详解

    一:前言   防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防 ...

  8. Mac svn使用学习-2-服务端

    2.在mac环境下搭建一个SVN服务器环境 1)创建一个名为myCode的仓库——svnadmin命令 格式: svnadmin SUBCOMMAND REPOS_PATH [ARGS & O ...

  9. Linux中Shell

    Linux中Shell Shell是什么 ​ Shell是一个命令行解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,可以用Shell来启动.挂起.停止.编写一些程序. S ...

  10. java多线程中的死锁情况读书笔记

    多线程中的死锁 在前面的分析中,我们知道一个对象可以用Synchronized方法或者其他的加锁形式来防止别的任务在互斥还没有释放的时候就访问这个对象. 试想一下这样的情况:某个任务在等待另一个任务, ...