谈跨站脚本攻击与防御的正确应用

以下的文章主要向大家讲述的是脚本攻击与防御的实际操作技巧,网络上曾经有过关于讲述跨站脚本攻击和防御的文案,但是随着攻击技术的不断进步进步,以前的关于跨站脚本攻击的看法与理论已经不能满足现在的攻击与防御的需要了,而且由于这种对于跨站脚本认识上的混乱…..

网络上曾经有过关于跨站脚本攻击与防御的文章,但是随着攻击技术的进步,以前的关于跨站脚本攻击的看法与理论已经不能满足现在的攻击与防御的需要了,而且由于这种对于跨站脚本认识上的混乱,导致现在很多的程序包括现在的动网都存在着跨站脚本过滤不严的问题,希望本文能给写程序的与研究程序的带来一点思路。

还是首先看看跨站脚本漏洞的成因,所谓跨站脚本漏洞其实就是Html的注入问题,恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码,数据流程如下:

恶意用户的Html输入————>web程序————>进入数据库————>web程序————>用户浏览器

这样我们就可以清楚的看到Html代码是如何进入受害者浏览器的了,我们也就可以根据这个流程来讨论跨站脚本的攻击与防御了!

1 什么是HTml输入?

这里给出一个HTml代码的示例

很多的程序最终都是将用户的输入转换成这种形式的。可以看到<>是告诉浏览器这是一个Html标记,img是这个Html标记的名称,src是这个标记的第一个属性,=后面是这个属性的值,后面的width是第二个属性,onerror是标记的事件属性。大家可以看到,一个Html标记是包括很多元素的,并不是传统意义上的只有输入<>才会注入Html,事实上只要你的输入处在Html标签内,产生了新的元素或者属性,就实现了跨站脚本攻击!实际上大多数隐秘的跨站脚本攻击是不需要<>的,因为现在的Ubb标签已经让你处在了Html标记之内,很有意思,不是么?

2 哪里才是罪恶的来源?

既然我们的目标是引入代码在目标用户的浏览器内执行,那么我们来看看哪些地方可以引入HTml代码吧!如果用户可以不受限制的引入<>,那么很显然他可以完全操纵一个Html标记,譬如 这样的形式,这对于追求安全的程序来说是绝对不允许的,所以首先要做转换的就是<>,通过如下代码:

过滤代码:

 

  1. replace(str,"<","<")  
  2. replace(str,">",">")  

 

好了,用户可能不能构造自己的HTml标记了,那么利用已经存在的属性如何呢?下面的代码依然可以工作得很好:

因为很多的Html标记里属性都支持javascript:[code]的形式,很好,很多的程序意识到了这一点,可能做了如下的转换:

过滤代码

 

  1. Dim re  
  2. Set re=new RegExp  
  3. re.IgnoreCase =True 
  4. re.Global=True 
  5. re.Pattern="javascript:" 
  6. Str = re.replace(Str,"javascript:")  
  7. re.Pattern="jscript:" 
  8. Str = re.replace(Str,"jscript:")  
  9. re.Pattern="vbscript:" 
  10. Str = re.replace(Str,"vbscript:")  
  11. set re=nothing 

 

你看,只要发现以javascript等脚本属性的形式都会被过滤掉,失去了:的脚本代码是起不了作用的!这样完美了么?事实上Html属性的值,注意是值而不是属性本身是支持&#ASCii这种形式表示的,譬如上面的代码可以换成这样:

代码又执行了,呵呵!看来你漏掉了点什么哦,加上这个代码吧!

 

  1. replace(str,"&","&") 

行了,&失去它原来的意义了,用户不能以其他方式表示Html属性值了哦!等等,这样的过滤真可以相信么?只要发现这种过滤的关键字机制,饶过就是简单的问题了:

没有javascript关键字了哦!注意中间那个是tab键弄出来的!关键字被拆分了哦!这是个很麻烦的问题,很多人忘记了这些特殊的字符,呵呵!有人想到要过滤空格了,在过滤之前我们再看看其他的一些东西吧!也许我们现在所处的src属性已经无法利用了,但是我们依然可以产生自己的属性或者事件机制哦!依然是可以执行Html代码的,首先说说事件机制吧:

这样依然可以执行代码的哦!明白问题出在哪了,不是么?有的程序员仿佛明白了,注意我说的是仿佛,动网就是一个典型的例子,事件属性不是要onerror么?很多人开始用正则表达式了,发现关键的词如onerror就会做转换或者提示用户不执行,是不是没有机会了呢?

当然不是的,事件只是让代码运行的一种方法而不是所有的,可以定义事件了那么也就可以实现自己弄出自己的属性了,试试下面的:

呵呵,还是执行了哦!在做关键字过滤之后有人发现是不是属性之间分隔要用到空格,好,他们把空格堵死了(这样认为的人很多,呵呵)!将空格转成 是个很普遍的方法?是么?甚至还可以让别人无法关键字拆分,不要太自信了,试试下面的代码看看如何:

这好象是利用了脚本里注释会被当作一个空白来表示造成的!那怎么办呢?上面提到的好象一直都是在进行被动的攻击防御,为什么不抓住他的本源出来呢?哪里出了问题哪里堵上!

上面的问题好象本质上就是一个东西,那就是用户超越了他所处的标签,也就是数据和代码的混淆,对付这种混淆的办法就是限制监牢,让用户在一个安全的空间内活动,这通过上面的分析大家也可能已经知道,只要在过滤了<>这两个人人都会去杀的字符之后就可以把用户的输入在输出的时候放到””之间,现在的一般的程序都是这样做的,譬如[img]http://www.loveshell.net[/img]将会转化成这是个好的安全习惯,然后呢?就要让用户的输入处在安全的领域里了,这可以通过过滤用户输入里””实现,但是不要忘记了,这个标签本身也是不安全的,过滤掉空格和tab键就不用担心关键字被拆分饶过了,然后就是用文章中提到的办法过滤掉script关键字,最后就是防止用户通过&#这样的形式饶过检查,转换掉&吧!

在文章中开始提到的图里可以看到,数据的转换和过滤是可以在3个地方进行转换的,在接受数据的时候可以转换下,在进入数据库的时候可以转换下,在输出数据的时候也可以转换下,但是困惑在哪里呢?

不得不面对一个问题就是许多时候程序员舍不得为安全做出那么大的应用上的牺牲,安全是要有代价的,譬如现在邮箱的就不愿意舍弃html标签,所以他们侧重于XSS的IDS检测的性质,只要发现不安全的东西就会转化,但是攻击是无法预知的,漂亮的东西总是脆弱的,有限制,肯定就有人会饶过,呵呵。本文没什么技术含量,只是希望搞安全的脚本人员能更加的了解Xss,跨站,不是那么简单滴!

上述的相关内容就是对谈跨站脚本攻击与防御的描述,希望会给你带来一些帮助在此方面。

 

【编辑推荐】

  1. 全面解析跨站脚本攻击
  2. 使用工具和测试防范跨站点脚本攻击
  3. 十二问让你全面了解跨站脚本攻击
  4. 跨站脚本攻击深入解析之:漏洞利用过程
  5. 巧妙运用NoScript阻止脚本攻击

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/124036.html<

(0)
管理的头像管理
上一篇2025-02-23 02:27
下一篇 2025-02-23 02:28

相关推荐

  • 挑选高防服务器怎么辨别真假防御?,测试方法有哪些?

    辨别高防服务器真假防御,核心在于核实服务商资质、进行实际压力测试,并审计其网络架构与硬件配置,高防服务器市场鱼龙混杂,不少商家用低价吸引用户,却提供无效防御,甚至用共享带宽冒充独享,下面从实战角度拆解辨别方法,避免踩坑,虚假防御的常见手法流量清洗能力虚标:宣称单机防御200G,实际是集群总带宽,单节点受攻击时直……

    2026-07-26
    0
  • 物理服务器租用最常见的5个坑有哪些,如何避坑?

    物理服务器租用最常见的五个坑在于硬件配置虚标、网络带宽欺骗、售后服务迟滞、合同条款埋伏以及数据保护缺失,避开这些坑,取决于你对服务商资质和实际能力的核实,硬件配置:宣传参数与实际性能的差距租用服务器时,配置单上写的是“E5-2680 v4 32核”,到手后跑分却只有一半,这种现象在行业中占较大比例,根源在于服务……

    2026-07-26
    0
  • 企业选择IDC服务商有哪些避坑指南,怎么选?

    增值电信业务许可证:以简米科技为例,其持有的豫B2-20231089可在线查证,表明其合法运营IDC业务,酷番云则拥有工信部一类增值电信全牌照,覆盖IDC、CDN、ISP,资质更全面,ICP备案号:简米科技的豫ICP备2023018319号、酷番云的滇ICP备2020007656号,均需备案在服务商主体名下,避……

    2026-07-26
    0
  • 站群服务器IP不干净的坑如何避开,怎么选?

    避开站群服务器IP不干净的核心方法是:选择持有正规增值电信业务经营许可证、拥有自营机房且IP段历史清晰的服务商,并在部署前对IP进行全面的黑名单和反向DNS查询,简米科技(2003年始创,持牌自营机房)和酷番云(工信部全牌照,双认证,CNNIC IP联盟成员)在IP资源管控上具备天然优势,能大幅降低污染风险,站……

    2026-07-26
    0
  • 云服务器选购最容易忽略的坑点有哪些,怎么选?

    云服务器选购最致命的坑点往往不是配置参数,而是服务商资质、网络线路和隐藏成本,这些直接决定你的业务稳定性与长期支出,配置陷阱:硬件参数背后的真实成本CPU性能的“超售”玄机很多用户只看核心数和主频,忽略了CPU型号和超售比例,同一代际的处理器,不同型号单核性能差距可能达到30%以上,更关键的是,部分服务商为了拉……

    2026-07-26
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注