不看后悔!程序员防御XSS的无奈

浏览:
字体:
发布时间:2017-11-15 09:46:27
来源:东方联盟

就程序员来说,防御xss攻击主要分为两种方式

一、是基于xss代码特征 进行防御

是基于本身脚本程序安全方面的防范

  基于特征的代码级xss防御 基于特征的防御是因为xss和注入漏洞一样,都是利用了Web页面的编写 不完善而造成的,但是一者又有区别,注入攻击主要是针对参数传递进行过滤就 略以比较彻底的防范,而xss的变化很多,每个漏洞所利用和针对的弱点都不尽 相同,这就给xss漏洞防御带来了困难:不可能以单—特征来概括所有xss攻击。 首先看最经典的xss代码: 从这个代码可以看出,如果可以让攻击者随意的输入“<”、“>”,无疑xss 是可以很轻易构造的,所以首先就要过滤掉“(”、“>”:

跨站XSS漏洞

一.黑客Web脚本攻击与防御技术核心剖析 replace(srr r.place{atr 使用上面的代码可以阻It攻击者构造典型的HTML标记,那么攻击者会怎么 办昵?既然不让用典型代码,那就利用已经存在的属性吧,下面的代码依然可以 正常使用; 基本所有的HTML标记的属性都支持“javascript:[code]”的形式,所以根据 上面的xss代码,程序员开始做如下的转换: Dim re Set re:new RegExp .e.Igno.eCase :rrue .e.Global:True .e.Pattern:'javascrip-.:' str _ re . replace { Str, ' j avascripr re.Pattern:'jscript:' Str : re.replace(Str,'jscript: " re.Pattern:"vbscript:' str : re.replace(Str,'vbscripe: .et re:nothing 经过这个代码过滤,只要发现用户以javascript等脚本属性的形式存在的代码 都将被过滤掉。这样就完美了么?当然不是,攻击者会利用HTML属性的值支持 “&#ASCii”的方式来进行新的xss伐码构造,也就是将值进行其他编码 所以程序员赶紧增加新的过滤 这样“&”失去它原来的意义,用户不能以其他方式表示html属性值了,这 是不是完美的呢?当然也不是。 这种过滤机制从根本上就是有问题的,攻击者很简单地构造就可以绕过了: 仔细看,l|面的代码中足不存在关键字javascript的,因为javascript被分割。

   最大威胁:跨站XSS成了“javas”和“cript”,中间有一个tab,于是程序员叉开话题了…… 另外,攻击者还可以利用自己产生的属性或者随机事件进行构造 这样的代码依然可以执行,于是很多程序员开始用正式表达式了,发现关键 的词如onerror就会做转换或者提示用户不执行- 这下攻击者没机会了吧?唉,不是的。 在HTML中,事件只是让代码运行的一种方法,既然可咀定义事件,那么也 就可以实现自己构造自己的属性r: 这……程序员开始抓狂中。别急,还有更厉害的 <1mg…:n#一/吖onerro.:alert《/xs¨width:10 0> 脚奉里注释会被当作一个宁白来表示,这样就又构成了xss代码 L面的xss代码中,javascript中的每个字符间都加入回车换行符,同样可以 执行。还有 img re:&# x6A& #x61& #x76&#x 61&#x73&#x63 &#x72&#x6 9&#x7 0 &#x7 4& #x3A&#x61&#x6C&#x65&#x72&#x7 4&#x2 B&#x27&#x58&#x53&#x53 &#x27&#x29> 这是对“javascript:alert(+xss’)”采用完全编码后得到的结果,依然可以执 行——采用特征防御的程序员集体崩溃了。 怎么办呢?上面的方法一直都是在进行被动的防御,为什么不抓住本源进行 封闭呢?丁是这就引出了另一种防御xss的方式:基于本身脚本程序安全方面的 防范。 44 22脚本程序本身的安全防御 基于脚本程序安全方面的防范简单来说就是在开发的时候就注意这样的攻 击,从脚本系统开始编写的时候就带入防范的理念,大体步骤如下; ①对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、 HTTP头、POST数据等,仅接收指定长度范围内、采用适当格式、采用所预期的 字符的内容提交,对其他的一律过滤。

XSS攻击

二.黑客Web脚奉攻击与防御技术核心剖析 ②空现session标记(session tokens)、CAPTCHA系统或者HTTP引用头榆查, 以防功能被第三方网站所执行。 ③确认接收的内容被妥善的规范化,仪包含最小的、安全的Tag(没有 javascript),去掉任何对远程内容的引用(尤其足样式表和javascript),使用I-rrrP only的cookie. 从原理上来说,上面的3个步骤对xss的防御是很有效果的,但是依然无法 成为比较完善的思路。因为如果像上面的步骤中所述的情况一样安排脚本系统开 发,先不说有没有人有这样的整体规划防御xss能力,单就假设卜述功能都实现 了,那也会有很大的问题——开发出来的脚本系统将会大大降低可用性。正常用 户仅能输入少量的、被指定的字符,脚本系统的交互性被降到很低的地步。 总地来说,xss攻击作为Web服务方面即将m现的最大威胁之‘,如何防范 和阻止xss攻击,保障Web站点的安全,是当前因特阿上大家都热衷的问题。 虽然上述的防御方式存在或多或少的缺陷或者纰漏,只能防御基本的xss,但是 正是因为这个防御体系的不完整性,才充分体现了攻防技术的对立和交错发展的 过程.所以无数的网络安全人都在投身其中,挥洒着自己的智慧!相信不久后的 某一天,完备的防御xss的易用性产品将在大家的一致努力F推出l 当今网络中存在无数类似这样的急需研究解决的技术问题,网络安全技术爱 好者,你准备好了吗?

 

原文地址:http://vm888.com/showinfo-23-5929-0.html

来源:东方联盟,欢迎分享,(公众号:vm888Com)

 

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 下载 | 关于东盟 | 安全雇佣 | 搞笑视频大全 | 微信学院 |
关于我们 | 联系我们 | 广告服务 | 人才招聘 | 服务条款 | 免责申明 | 帮助中心 | 作品发布 | 网站地图 | 技术培训
Copyright © 2007 - 2018 Vm888.Com. All Rights Reserved
东方联盟 版权所有