首页 理论教育 跨站攻击防范方法-网络安全防范项目教程

跨站攻击防范方法-网络安全防范项目教程

时间:2023-11-26 理论教育 版权反馈
【摘要】:HTML属性跨站的彻底防范即使程序设计者彻底过滤了各种危险字符,确实给攻击者进行跨站入侵带来了麻烦,攻击者依然可以利用程序的缺陷进行攻击,因为攻击者可以利用前面说的属性和事件机制构造执行Script代码。这样的事件属性,同样是可以实现跨站攻击的。只要注意到以上这几点过滤,就可以基本保证网站程序的安全性,不被跨站攻击了。

跨站攻击防范方法-网络安全防范项目教程

(1)过滤“<”和“>;”标记

XSS跨站攻击的最终目标是引入Script代码在用户的浏览器中执行,所以最基本最简单的过滤方法就是转换“<”和“>;”标记。

(2)HTML属性过滤

上面的代码可以过滤掉“<”和“>;”标记,让攻击者无法构造HTML标记。但是,攻击者可能会利用已存在的属性,如插入图片功能,将图片的路径属性修改为一段Script代码,如<img src="javascript:alert(/XSS攻击/)"width=100>;。上述代码执行后,同样可以实现跨站的目的。而且很多的HTML标记里属性都支持“javascript:跨站代码”的形式,因此就需要对攻击者输入的数据进行如下转换:replace(str,"javascript:","")replace(str,"jscript:","")replace(str,"vbscript:","")。一旦用户输入的语句中含有“javascript”“jscript”“vbscript”,都用空白代替。

(3)过滤特殊字符:&、回车和空格

因为HTML属性的值,可支持“&#ASCii”的形式进行表示,前面的跨站代码就可以换成为:<img src="javascript:alert(/XSS攻击/)"width=100>;,即可突破过滤程序,继续进行跨站攻击。使用代码:replace(str,"&","&")上述代码将“&”替换为了“&”,于是后面的语句就变形失效了。但是还有其他的方式绕过过滤,因为过滤关键字的方式具有很多的漏洞。攻击者可以构造下面的攻击代码:<img src="javas cript:alert(/XSS攻击/)"width=100>;,这里关键字被空格、准确的说是Tab键进行了拆分,上面的代码就又失效了,这样就有考虑将Tab空格过滤,防止此类的跨站攻击。

(4)HTML属性跨站的彻底防范(www.xing528.com)

即使程序设计者彻底过滤了各种危险字符,确实给攻击者进行跨站入侵带来了麻烦,攻击者依然可以利用程序的缺陷进行攻击,因为攻击者可以利用前面说的属性和事件机制构造执行Script代码。例如,有下面这样一个图片标记代码:<img src="#"onerror=alert(/跨站/)>;,这是一个利用onerror事件的典型跨站攻击示例,于是许多程序设计者对此事件进行了过滤,一旦发现关键字“onerror”,就进行转换过滤。然而攻击者可以利用的时间跨站方法,并不只有onerror一种,各种各样的属性都可以进行构造跨站攻击。例如:<img src="#"style="Xss:expression(alert(/跨站/));">;。这样的事件属性,同样是可以实现跨站攻击的。可以注意到,在“src="#"”和“style”之间有一个空格,也就是说属性之间需要空格分隔,于是程序设计者可能对空格进行过滤,以防范此类的攻击。但是过滤了空格之后,同样可以被攻击者突破。<img src="#"/**/onerror=alert(/跨站/)width=100>;这段代码利用了脚本语言的规则漏洞,在脚本语言中的注释会被当成一个空白来表示。所以,注释代码就间接的达到了空格的效果,使语句得以执行。

过滤了“<”和“>;”之后,就可以把用户的输入在输出时放到双引号之间。然后,要让用户的输入处在安全的领域里,这时可以通过过滤用户输入数据中的双引号“"”,来防止用户跨越许可的标记。

另外,再过滤掉空格和<Tab>;键就不用担心关键字拆分绕过了;最后,还要过滤掉“script”关键字,并转换掉&。

只要注意到以上这几点过滤,就可以基本保证网站程序的安全性,不被跨站攻击了。

当然,漏洞难免出现,要彻底地保证安全,舍弃HTML标签功能是最保险的解决方法。不过,这会让程序少了许多漂亮的效果。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈