WEB开发网
开发学院网络安全安全技术 解析如何防止XSS跨站脚本攻击 阅读

解析如何防止XSS跨站脚本攻击

 2009-02-12 13:55:30 来源:WEB开发网   
核心提示: 不要将输出解码与Unicode字符编码的概念弄混淆了,后者涉及映射Unicode字符到位序列,解析如何防止XSS跨站脚本攻击(2),这种级别的编码通常是自动解码,并不能缓解攻击,例如</SCRIPT>可以终止脚本块,即使该脚本块被注入脚本内方法调用内的引用字符,但是,如果没有正

不要将输出解码与Unicode字符编码的概念弄混淆了,后者涉及映射Unicode字符到位序列。这种级别的编码通常是自动解码,并不能缓解攻击。但是,如果没有正确理解服务器和浏览器间的目标字符集,有可能导致与非目标字符产生通信,从而招致跨站XSS脚本攻击。这也正是为所有通信指定Unicode字符编码(字符集)(如UTF-8等)的重要所在。

Escaping是重要的工具,能够确保不可信数据不能被用来传递注入攻击。这样做并不会对解码数据造成影响,仍将正确呈现在浏览器中,解码只能阻止运行中发生的攻击。

注入攻击理论

注入攻击是这样一种攻击方式,它主要涉及破坏数据结构并通过使用特殊字符(直译程序正在使用的重要数据)转换为代码结构。XSS是一种注入攻击形式,浏览器作为直译程序,攻击被隐藏在HTML文件中。HTML一直都是代码和数据最差的mashup,因为HTML有很多可能的地方放置代码以及很多不同的有效编码。HTML是很复杂的,因为它不仅是层次结构的,而且还包含很多不同的解析器(XML、HTML、JavaScript、VBScript、CSS、URL等)。

要想真正明白注入攻击与XSS的关系,必须认真考虑HTML DOM的层次结构中的注入攻击。在HTML文件的某个位置(即开发者允许不可信数据列入DOM的位置)插入数据,主要有两种注入代码的方式:

Injecting UP,上行注入

最常见的方式是关闭现有的context并开始一个新的代码context,例如,当你关闭HTML属性时使用">并开始新的<SCRIPT>标签。这种攻击将关闭原始context(层次结构的上层部分),然后开始新的标签允许脚本代码执行。记住,当你试图破坏现有context时你可以跳过很多层次结构的上层部分,例如</SCRIPT>可以终止脚本块,即使该脚本块被注入脚本内方法调用内的引用字符,这是因为HTML解析器在JavaScript解析器之前运行。

上一页  1 2 3 4 5 6 7  下一页

Tags:解析 如何 防止

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