PHP中xss攻击与防御

学习笔记 马富天 2016-04-29 11:09:21 81 1

【摘要】把自己仅仅知道的一个xss攻击方式分享一下,后期遇到新的攻击方式再补充。

XSS:Cross Site Script,本来简写是css,但为了区别层级样式表的css,因此在安全领域叫做"XSS"。

XSS攻击通常是指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

  1. //	第一种攻击:在输入框中输入
  2. <script>alert('xss');</script>	//	弹窗攻击
  3. <meta http-equiv="refresh" content="0;" url=""> 	//	不断的刷新当前页面
  4. <iframe src='http://www.baidu.com' FRAMEBORDER=0 width=1000 height=900 />	//	嵌入网页
  5. //	解决方法:使用htmlspecialchars()转换成HTML实体。
  6. //	把 '&' 转义成 '&amp;' 
  7. //	把 '"' 转义成 '&quot;'
  8. //	把 "'" 转义成 '&#039;' (或者 &apos;)
  9. //	把 '<' 转义成 '&lt;' 
  10. //	把 '>' 转义成 '&gt;' 
  11. //	<script>alert('xss');</script> 就变成了:&lt;script&gt;alert('xss');&lt;/script&gt;

一个比较全的防xss攻击函数:

  1. function clean_xss(&$string, $low = False)
  2. {
  3. 	if (! is_array ( $string ))
  4. 	{
  5. 		$string = trim ( $string );
  6. 		$string = strip_tags ( $string );
  7. 		$string = htmlspecialchars ( $string );
  8. 		if ($low)
  9. 		{
  10. 			return True;
  11. 		}
  12. 		$string = str_replace ( array ('"', "\\", "'", "/", "..", "../", "./", "//" ), '', $string );
  13. 		$no = '/%0[0-8bcef]/';
  14. 		$string = preg_replace ( $no, '', $string );
  15. 		$no = '/%1[0-9a-f]/';
  16. 		$string = preg_replace ( $no, '', $string );
  17. 		$no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
  18. 		$string = preg_replace ( $no, '', $string );
  19. 		return True;
  20. 	}
  21. 	$keys = array_keys ( $string );
  22. 	foreach ( $keys as $key )
  23. 	{
  24. 		clean_xss ( $string [$key] );
  25. 	}
  26. }

版权归 马富天PHP博客 所有

本文标题:《PHP中xss攻击与防御》

本文链接地址:http://www.mafutian.net/77.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 base64_encode()和base64_decode()简介 》 下一篇《 开发网站需要注意的几个重要的点 》
分享到:

所有评论

  1. 首页
  2. 上一页
  3. 1
  4. 下一页
  5. 尾页
  6. 第1页
  7. 每页12条
  8. 共1页
  9. 共1条
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码