变量安全过滤,防止xss攻击
下面这个方法不管是字符串还是数组,都可以进行过滤
/**
* @purpose : 对变量进行安全过滤,使 $_GET、$_POST、$q->record 等变量更安全
* @author : daicr
* @time : 2018-03-15
* @param : array $fArray 需要转换的数组
* @return :array $fArray 转换完成的数组
*/
function varFilter ($fArray) {
if (is_array($fArray)) {
foreach ( $fArray AS $_arrykey => $_arryval ) {
if ( is_string($_arryval) ) {
$fArray[$_arrykey] = trim($fArray[$_arrykey]); // 去除左右两端空格
$fArray[$_arrykey] = htmlspecialchars($fArray[$_arrykey]); // 将特殊字元转成 HTML 格式
$fArray[$_arrykey] = strip_tags($fArray[$_arrykey]); // 从字符串中去除 HTML 和 PHP 标记
$fArray[$_arrykey] = str_replace('javascript', 'javascript ', $fArray[$_arrykey]); // 禁止 javascript
if (!get_magic_quotes_gpc()) { // 当 magic_quotes_gpc 设置为 OFF 时,特殊字符加转移符 \
$fArray[$_arrykey] = addslashes($fArray[$_arrykey]);
}
}else if (is_array($_arryval)){ // 如果是数组,递归调用
$fArray[$_arrykey] = varFilter($_arryval);
}
}
} else {
$fArray = trim($fArray); // 去除左右两端空格
$fArray = htmlspecialchars($fArray); // 将特殊字元转成 HTML 格式
$fArray = strip_tags($fArray); // 从字符串中去除 HTML 和 PHP 标记
$fArray = str_replace("javascript", "javascript ", $fArray);// 禁止 javascript
if (!get_magic_quotes_gpc()) { // 当 magic_quotes_gpc 设置为 OFF 时,特殊字符加转义符 \
$fArray = addslashes($fArray);
}
}
Return $fArray;
}
下面这个方法只用于过滤字符串中的一些特殊字符
/**
* @purpose : 字符串安全过滤函数,可过滤掉空格,*,",',;,<,>,{,},\,../,..,./,UNION等
* @author : daicr
* @time : 2018-03-15
* @param : string $string 需要进行过滤的字符串
* @return : string $string 过滤完毕的字符串
*/
function strFilter($string) {
$string = str_replace('%20','',$string); // 过滤 空格
$string = str_replace('%27','',$string); // 过滤 '
$string = str_replace('%2527','',$string); // 过滤 '
$string = str_replace('*','',$string); // 过滤 *
$string = str_replace('"','"',$string); // 将 " 转义为html实体
$string = str_replace("'",'',$string); // 过滤 '
$string = str_replace('"','',$string); // 过滤 "
$string = str_replace(';','',$string); // 过滤 ;
$string = str_replace('<','<',$string); // 将 < 转义为html实体
$string = str_replace('>','>',$string); // 将 > 转义为html实体
$string = str_replace("{",'',$string); // 过滤 {
$string = str_replace('}','',$string); // 过滤 }
$string = str_replace('\\','',$string); // 过滤
$string = str_replace("../","",$str); // 过滤 ../
$string = str_replace("..","",$str); // 过滤 ..
$string = str_replace("./","",$str); // 过滤 ./
$string = str_ireplace("UNION","",$str); // 忽略大小写过滤 UNION
return $string;
}
对用户输入的字符串进行过滤,以防止 xss 攻击
变量安全过滤,防止xss攻击的更多相关文章
- PHP不过过滤防止xss攻击的方法
PHP不过过滤防止xss攻击的方法<pre> $content=htmlspecialchars($content); $pos=strpos($content,"\u" ...
- 拦截过滤防御XSS攻击 -- Struts2.3 以及 2.5 的解决方式
使用Struts2框架开发的后台在防御XSS攻击的时候很多方式都不能用,因为Struts2对请求进行的二次封装有区别.以下针对Struts2的XSS攻击进行拦截过滤防御解决: Struts2.3 本方 ...
- 特殊字符的过滤,防止xss攻击
概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允 ...
- 过滤xss攻击和sql注入函数
/**+----------------------------------------------------------* The goal of this function is to be a ...
- PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数
XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...
- 文本XSS攻击过滤
在FCK或百度编辑器等常用富文本编辑器中,通常是会被XSS攻击 处理方法: 文本框模拟输入了以下文本 <span style="dispaly:none" onclick=& ...
- 前端过滤XSS攻击
日常开发过程中,对于存在用户交互的一些门户网站等,过滤xss攻击是必不可少的. 此处主要记录下我在工作过程中的简单处理方法. 前端过滤XSS攻击, 我这里用的是开源工程 js-xss,官网地址:htt ...
- XSS攻击过滤处理
关于XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中. XSS漏洞的危害 网络钓鱼,包括盗取各类用户账号: 窃取用户cooki ...
- 根据白名单过滤 HTML(防止 XSS 攻击)
https://github.com/leizongmin/js-xss/blob/master/README.zh.md 根据白名单过滤 HTML(防止 XSS 攻击) xss是一个用于对用户输入的 ...
随机推荐
- epoll函数
函数epoll 1. 函数epoll_creat: 该函数生成一个epoll专用的文件描述符 int epoll_creae(int size); 分析: size:epoll上能关注的最大描述符数 ...
- 关于 java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
今天遇到了这个异常,其实是自己经验欠缺所致.我是通过mybatis查询到数据库传过来的主键,是一个32位的char类型. 代码: //查询总账表的该组织总账记录,包括该条记录的主键id.账户余额Dzz ...
- SVN不要显示问号
让SVN不要显示未进行版本控制的文件(夹)图标的问号: 1.选择TortoiseSVN→SettIngs 2.Overlays→取消勾选Unversioned,点击“应用”,然后重启电脑即可
- C#default关键字(泛型代码中的默认关键字)
在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T:T 是引用类型还是值类型.如果 T 为值类型,则它是数值还是结构.给定参数化类型 T 的一个变量 t,只有 ...
- 用Web api /Nancy 通过Owin Self Host简易实现一个 Http 服务器
过去做 端游的Http 服务器 用的WebApi 或者Mvc架构,都是放在iis...而我已经是懒出一个地步,并不想去配iis,或者去管理iis,所以我很喜欢 Self host 的启动方式. C#做 ...
- 真的分治fft
以前学的分治fft f[i]=sigma(f[i-x]*g[x]),其中g[x]已知 那么我们可以用cdq分治来做(l,mid 对mid+1,t的影响) 而现在的$f[i]=sum(f(i-x)*f( ...
- raspberry pi恢复jessie镜像之后
1.更新源 nano /etc/apt/source.list deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib ...
- [转]MySQL 数据类型(float)的注意事项
http://www.cnblogs.com/zhoujinyi/archive/2013/04/26/3043160.html 可能由于版本关系,我的mysql5.7插入数据超过范围时会提示,126 ...
- 【译】理解JavaScript中的柯里化
译文开始 函数式编程是一种编程风格,这种编程风格就是试图将传递函数作为参数(即将作为回调函数)和返回一个函数,但没有函数副作用(函数副作用即会改变程序的状态). 有很多语言采用这种编程风格,其中包括J ...
- ssh登陆linux服务器 实际场景讲解 让你管理服务器更安全
很多时候我们管理linux系统,都谁使用ssh登陆,因为都知道ssh是加密传输的协议的,可以有效保证我们与 服务器之间的数据通信安全.但是我们忽略了一点,但是登陆的时候我们是输入的账号和密码,这一点其 ...