• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php预防XSS攻击,ajax跨域攻击的方法_php

php 搞代码 3年前 (2018-06-21) 133次浏览 已收录 0个评论

对网站发动XSS攻击的方式有很多种,仅仅使用php的一些内置过滤函数是对付不了的,即使你将filter_var,mysql_real_escape_string,htmlentities,htmlspecialchars,strip_tags这些函数都使用上了也不一定能保证绝对的安全。

现在有很多php开发框架都提供关于防XSS攻击的过滤方法,下面和大家分享一个预防XSS攻击和ajax跨域攻击的函数,摘自某开发框架,相比于仅仅使用内置函数应该还是够强了的吧。

 function xss_clean($data){  // Fix &entity/n;  $data=str_replace(array('&','<','>'),array('&','<','>'),$data);  $data=preg_replace('/(&#*/w+)[/x00-/x20]+;/u','$1;',$data);  $data=preg_replace('/(&#x*[0-9A-F]+);*/iu','$1;',$data);  $data=html_entity_decode($data,ENT_COMPAT,'UTF-8');  // Remove any attribute starting with "on" or xmlns  $data=preg_replace('#(<[^>]+?[/x00-/x20"/'])(?:onxmlns)[^>]*+>#iu','$1>',$data);  // Remove javascript: and vbscript: protocols  $data=preg_replace('#([a-z]*)[/x00-/x20]*=[/x00-/x20]*([`/'"]*)[/x00-/x20]*j[/x00-/x20]*a[/x00-/x20]*v[/x00-/x20]*a[/x00-/x20]*s[/x00-/x20]*c[/x00-/x20]*r[/x00-/x20]*i[/x00-/x20]*p[/x00-/x20]*t[/x00-/x20]*:#iu','$1=$2nojavascript...',$data);  $data=preg_replace('#([a-z]*)[/x00-/x20]*=([/'"]*)[/x00-/x20]*v[/x00-/x20]*b[/x00-/x20]*s[/x00-/x20]*c[/x00-/x20]*r[/x00-/x20]*i[/x00-/x20]*p[/x00-/x20]*t[/x00-/x20]*:#iu','$1=$2novbscript...',$data);  $data=preg_replace('#([a-z]*)[/x00-/x20]*=([/'"]*)[/x00-/x20]*-moz-binding[/x00-/x20]*:#u','$1=$2nomozbinding...',$data);  // Only works in IE: <span style="width: expression(alert('Ping!'));"></span>  $data=preg_replace('#(<[^>]+?)style[/x00-/x20]*=[/x00-/x20]*[`/'"]*.*?expression[/x00-/x20]*/([^>]*+>#i','$1>',$data);  $data=preg_replace('#(<[^>]+?)style[/x00-/x20]*=[/x00-/x20]*[`/'"]*.*?behaviour[/x00-/x20]*/([^>]*+>#i','$1>',$data);  $data=preg_replace('#(<[^>]+?)style[/x00-/x20]*=[/x00-/x20]*[`/'"]*.*?s[/x00-/x20]*c[/x00-/x20]*r[/x00-/x20]*i[/x00-/x20]*p[/x00-/x20]*t[/x00-/x20]*:*[^>]*+>#iu','$1>',$data);  // Remove namespaced elements (we do not need them)  $data=preg_replace('#</*/w+:/w[^>]*+>#i','',$data);  // http://www.Alixixi.com/  do{// Remove really unwanted tags   $old_data=$data;   $data=preg_replace('#</*(?:appletb(?:asegsoundlink)embedframe(?:set)?i(?:framelayer)l(?:ayerink)metaobjects(?:cripttyle)titlexml)[^>]*+>#i','',$data);  }while($old_data!==$data);  // we are done...  return $data; }

您可能感兴趣的文章

  • 通用的PHP防注入漏洞攻击的过滤函数代码
  • PHP检查浏览器参数防止被SQL注入的函数
  • php提取身份证号码中的生日日期以及验证是否为未成年人的函数
  • jquery+html+php 实现Ajax无刷新文件上传
  • 防止网站被攻击的办法
  • smarty模板中使用php函数以及smarty模板中如何对一个变量使用多个函数
  • php 输出昨天,今天,明天是星期几的方法
  • 强大的PHP 图片处理类(水印、透明度、缩放、锐化、旋转、翻转、剪切、反色)

欢迎大家阅读《php预防XSS攻击,ajax跨域攻击的方法_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址