常见跨站攻击的防御教程
作者:佚名 来源:本站 时间:2018-01-01 点击:131次
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
以下是一个恶意js脚本的范例:
下面简单介绍一下Cross脚本的防御方法:
大体的思路很简单,一般XSS攻击都是程序没有过滤掉用户输入中的恶意js脚本,以致恶意的js脚本被解释执行。所以我们只需要将用户输入字符串进行检测,去掉标签,或者转义'<'字符。
PHP代码:
if($_SERVER['REQUEST_URI']) { $temp = urldecode($_SERVER['REQUEST_URI']); if(strexists($temp, '<') || strexists($temp, '"')) { $_GET = shtmlspecialchars($_GET);//XSS } } //取消HTML代码 function shtmlspecialchars($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = shtmlspecialchars($val); } } else { $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1', str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string)); } return $string; }
当然也可以转义:
1、htmlspecialchars() 转义特别的字符为HTML实体
•'&' (ampersand) becomes '&'
•'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
•''' (single quote) becomes ''' only when ENT_QUOTES is set.
•'<' (less than) becomes '<'
•'>' (greater than) becomes '>'
2、htmlspecialchars_decode()将实体转成HTML代码,函数1的反函数
3、 htmlentities()这个是全部转换html实体,和htmlspecialchars()区别在于,这个函数是转义全部的字符,而htmlspecialchars()仅仅转义上面限定的5个特殊字符
jsp中同样有转义函数:
- 上一篇: 从头开始网站开发学习指南
- 下一篇: 使用Linux命令find查找PHP木马