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

时间:2016.04.26 发布人:a1107123692

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

已解决问题

谷歌a1107123692用户在2016.04.26提交了关于“秘密花园php预防XSS攻击,ajax跨域攻击的方法”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T00:02:14。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,你是我的宝贝,你是我的花,谢谢你对我的帮助!

希望以下的回答,能够帮助你。

第1个回答

用户名:jubi123  

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

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

  fun吧镇陆上度超年土ctionxss_clean($data){

  //Fix&entityn;

  $data=str_replace(array去则土神久立米席刻电('&','<','>'著最这群胜声济便),array('&','<','>'),$data);

  $data谓眼排例自行言歌映=preg_repla笔宗输件明差权掌牛甲ce('/(&#*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');

  //Removeany束往突报棉样次排式望精attributestartingwith"on"orxmlns

  $data=preg_replace('#(<[^>]+?[x00-x20"'])(?:onxmlns)[^>]*+>#iu','$1>',$data);

  //Removej**ascript:andvbscript富露冲情轴凯课: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=团婷唱读板刑察则客员效$2noj**ascript',$data);

  $data=preg_repla请赵杨蒸诉ce('#([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);

  //OnlyworksinIE:

  $data=preg_replace('#(<[^>]+?)style[x00-x20]*=[x00-x20]*[`'"]*.*?expression[x00-x20]*([^>]*+>#i','$1>',$data);

  $data=preg_replace('#(<[^>]+?)style[x00-x20]*=[x00-x20]*[`'"]*.*?beh**iour[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);

  //Removenamespacedelements(wedonotneedthem)

  $data=preg_replace('#]*+>#i','',$data);

  //http://www.***.com/

  do{//Removereallyunwantedtags

  $old_data=$data;

  $data=preg_replace('#]*+>#i','',$data);

  }while($old_data!==$data);

  //wearedone

  return$data;

  }