WEB开发网
开发学院网络安全黑客技术 也谈跨站脚本攻击与防御之XSS 阅读

也谈跨站脚本攻击与防御之XSS

 2006-08-08 20:30:54 来源:WEB开发网   
核心提示: 2 哪里才是罪恶的来源?既然我们的目标是引入代码在目标用户的浏览器内执行,那么我们来看看哪些地方可以引入HTml代码吧!如果用户可以不受限制的引入<>,也谈跨站脚本攻击与防御之XSS(2),那么很显然他可以完全操纵一个Html标记,譬如 这样的形式,只要发现以javascrip

2 哪里才是罪恶的来源?

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

过滤代码:

以下是引用片段:
  replace(str,"<","<")
replace(str,">",">")

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

以下是引用片段:
<img src="javascript:alert(/xss/)" width=100> 

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

过滤代码

以下是引用片段:
  Dim re 
  Set re=new RegExp 
  re.IgnoreCase =True 
  re.Global=True 
  re.Pattern="javascript:" 
  Str = re.replace(Str,"javascript:") 
  re.Pattern="jscript:" 
  Str = re.replace(Str,"jscript:") 
  re.Pattern="vbscript:" 
   
  Str = re.replace(Str,"vbscript:") 
  set re=nothing 

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

上一页  1 2 3 4  下一页

Tags:谈跨站 脚本 攻击

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接