PHP预防XSS攻击,ajax跨域攻击的方法
对网站发动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跨域攻击的方法相关推荐
- Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案 参考文章: (1)Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录 ...
- ajax总结(三):ajax跨域访问接口方法汇总
ajax跨域访问接口方法和模板引擎的应用 一.学习跨域之前先要了解: 1.同源和跨域的概念 a.同源:协议头.域名.端口全部一样就叫同源; b.跨域:只要协议头,域名,端口任意一个不一样就是跨域. 因 ...
- Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法
当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示 XMLHttpRequest cannot load http://xxxxxx. Origin http://xxxxxx ...
- PHP接口允许ajax跨域访问设置方法(亲测)
背景 H5开发中使用ajax调用数据接口, 如果接口文件不在同域名下会提示跨域错误(No 'Access-Control-Allow-Origin' header is present on the ...
- ajax跨域请求 html5,HTML5中使用postMessage实现Ajax跨域请求的方法
由于同源策略的限制,Javascript存在跨域通信的问题,典型的跨域问题有iframe与父级的通信等. 常规的几种解决方法: (1) document.domain+iframe: (2) 动态创建 ...
- 第114天:Ajax跨域请求解决方法(二)
一.什么是跨域 我们先回顾一下域名地址的组成: http:// www . google : 8080 / script/jquery.js http:// (协议号) www (子 ...
- PHP接口允许ajax跨域访问设置方法
背景 H5开发中使用ajax调用数据接口, 如果接口文件不在同域名下会提示跨域错误(No 'Access-Control-Allow-Origin' header is present on the ...
- WebApi Ajax 跨域请求解决方法(CORS实现)
ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题, 特别各种A ...
- [转]Ajax跨域访问问题-方法大全
Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...
最新文章
- java中过滤器Filter的使用总结【转载】
- html事件隐藏,Html事件列表
- 二阶振荡环节的谐振频率_【干货分享】晶体谐振器振荡频差的原因及对策
- 内容拾遗之字符串与数据结构
- HDU 2859 Phalanx(二维DP)
- 关于laravel数据库问题
- 如何使用组策略提升Windows系统性能
- 大数据在智慧城市中重要的作用
- 付费用户金字塔模型在充值消费活动前后的显著差异解读
- python mac地址_如何使用Python生成MAC地址
- 利润表模板excel_德勤HR:请1小时内,用Excel搭建哔哩哔哩财务估值模型
- 苹果开场铃声 android,推荐几款免费安卓、苹果手机铃声剪辑软件?
- iOs LightBlue与cc2540 BLE开发板之间的通信实验 [原创, 多图]
- 【matlab算法原理详解】车牌识别算法
- ip rule 路由策略数据库管理命令
- 电脑打字拼音出现下划线,没有中文提示框
- html 中的push方法,push方法怎么使用
- h5应用数据加密_H5+应用打包JS没有加密混淆
- 冯诺依曼最伟大的发现?----元胞自动机
- maven安装测试报JAVA_HOME路径安装错误
热门文章
- osm2mysql_安装部署MySQL主从复制
- 使用java+TestNG进行接口回归测试 1
- 阿里巴巴数据分析沙龙 杭州站圆满召开
- Java B2B2C多用户商城 springcloud架构- 企业云架构common-service代码结构分析(六)...
- day28:检测磁盘io|自定义时段查看tomcat 日记|打印城市名字|代码上线|统计网站并发量...
- 我是该高兴呢还是悲伤呢?
- 编写测试:VC下获取文件大小的4种方法
- 常用正则表达式总结(js与C#对照)
- 一代杰出科学家--钱学森去世了
- VS Resharper快捷键没了处理办法