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

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

function xss_clean($data){$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');$data = preg_replace('#(<[^>]+?[x00-x20"'])(?:onxmlns)[^>]*+>#iu','$1>',$data);$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:$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);$data=preg_replace('#]*+>#i','',$data);do{$old_data=$data;$data=preg_replace('#]*+>#i','',$data);}while($old_data!==$data);// we are done...return $data;
}

PHP预防XSS攻击,ajax跨域攻击的方法相关推荐

  1. Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案

    Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案 参考文章: (1)Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录 ...

  2. ajax总结(三):ajax跨域访问接口方法汇总

    ajax跨域访问接口方法和模板引擎的应用 一.学习跨域之前先要了解: 1.同源和跨域的概念 a.同源:协议头.域名.端口全部一样就叫同源; b.跨域:只要协议头,域名,端口任意一个不一样就是跨域. 因 ...

  3. Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法

    当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示 XMLHttpRequest cannot load http://xxxxxx. Origin http://xxxxxx ...

  4. PHP接口允许ajax跨域访问设置方法(亲测)

    背景 H5开发中使用ajax调用数据接口, 如果接口文件不在同域名下会提示跨域错误(No 'Access-Control-Allow-Origin' header is present on the ...

  5. ajax跨域请求 html5,HTML5中使用postMessage实现Ajax跨域请求的方法

    由于同源策略的限制,Javascript存在跨域通信的问题,典型的跨域问题有iframe与父级的通信等. 常规的几种解决方法: (1) document.domain+iframe: (2) 动态创建 ...

  6. 第114天:Ajax跨域请求解决方法(二)

    一.什么是跨域 我们先回顾一下域名地址的组成: http:// www . google : 8080 / script/jquery.js   http:// (协议号)       www  (子 ...

  7. PHP接口允许ajax跨域访问设置方法

    背景 H5开发中使用ajax调用数据接口, 如果接口文件不在同域名下会提示跨域错误(No 'Access-Control-Allow-Origin' header is present on the ...

  8. WebApi Ajax 跨域请求解决方法(CORS实现)

    ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题, 特别各种A ...

  9. [转]Ajax跨域访问问题-方法大全

    Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...

最新文章

  1. java中过滤器Filter的使用总结【转载】
  2. html事件隐藏,Html事件列表
  3. 二阶振荡环节的谐振频率_【干货分享】晶体谐振器振荡频差的原因及对策
  4. 内容拾遗之字符串与数据结构
  5. HDU 2859 Phalanx(二维DP)
  6. 关于laravel数据库问题
  7. 如何使用组策略提升Windows系统性能
  8. 大数据在智慧城市中重要的作用
  9. 付费用户金字塔模型在充值消费活动前后的显著差异解读
  10. python mac地址_如何使用Python生成MAC地址
  11. 利润表模板excel_德勤HR:请1小时内,用Excel搭建哔哩哔哩财务估值模型
  12. 苹果开场铃声 android,推荐几款免费安卓、苹果手机铃声剪辑软件?
  13. iOs LightBlue与cc2540 BLE开发板之间的通信实验 [原创, 多图]
  14. 【matlab算法原理详解】车牌识别算法
  15. ip rule 路由策略数据库管理命令
  16. 电脑打字拼音出现下划线,没有中文提示框
  17. html 中的push方法,push方法怎么使用
  18. h5应用数据加密_H5+应用打包JS没有加密混淆
  19. 冯诺依曼最伟大的发现?----元胞自动机
  20. maven安装测试报JAVA_HOME路径安装错误

热门文章

  1. osm2mysql_安装部署MySQL主从复制
  2. 使用java+TestNG进行接口回归测试 1
  3. 阿里巴巴数据分析沙龙 杭州站圆满召开
  4. Java B2B2C多用户商城 springcloud架构- 企业云架构common-service代码结构分析(六)...
  5. day28:检测磁盘io|自定义时段查看tomcat 日记|打印城市名字|代码上线|统计网站并发量...
  6. 我是该高兴呢还是悲伤呢?
  7. 编写测试:VC下获取文件大小的4种方法
  8. 常用正则表达式总结(js与C#对照)
  9. 一代杰出科学家--钱学森去世了
  10. VS Resharper快捷键没了处理办法