下面这个方法不管是字符串还是数组,都可以进行过滤

/**
* @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('"','&quot;',$string); // 将 " 转义为html实体
$string = str_replace("'",'',$string); // 过滤 '
$string = str_replace('"','',$string); // 过滤 "
$string = str_replace(';','',$string); // 过滤 ;
$string = str_replace('<','&lt;',$string); // 将 < 转义为html实体
$string = str_replace('>','&gt;',$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攻击的更多相关文章

  1. PHP不过过滤防止xss攻击的方法

    PHP不过过滤防止xss攻击的方法<pre> $content=htmlspecialchars($content); $pos=strpos($content,"\u" ...

  2. 拦截过滤防御XSS攻击 -- Struts2.3 以及 2.5 的解决方式

    使用Struts2框架开发的后台在防御XSS攻击的时候很多方式都不能用,因为Struts2对请求进行的二次封装有区别.以下针对Struts2的XSS攻击进行拦截过滤防御解决: Struts2.3 本方 ...

  3. 特殊字符的过滤,防止xss攻击

    概念 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允 ...

  4. 过滤xss攻击和sql注入函数

    /**+----------------------------------------------------------* The goal of this function is to be a ...

  5. PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数

    XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...

  6. 文本XSS攻击过滤

    在FCK或百度编辑器等常用富文本编辑器中,通常是会被XSS攻击 处理方法: 文本框模拟输入了以下文本 <span style="dispaly:none" onclick=& ...

  7. 前端过滤XSS攻击

    日常开发过程中,对于存在用户交互的一些门户网站等,过滤xss攻击是必不可少的. 此处主要记录下我在工作过程中的简单处理方法. 前端过滤XSS攻击, 我这里用的是开源工程 js-xss,官网地址:htt ...

  8. XSS攻击过滤处理

    关于XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中. XSS漏洞的危害 网络钓鱼,包括盗取各类用户账号: 窃取用户cooki ...

  9. 根据白名单过滤 HTML(防止 XSS 攻击)

    https://github.com/leizongmin/js-xss/blob/master/README.zh.md 根据白名单过滤 HTML(防止 XSS 攻击) xss是一个用于对用户输入的 ...

随机推荐

  1. C#获取一周的工作日显示(星期几)

    代码如下: gridBandW1.Caption = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetDayName ...

  2. Git 分支 - 分支的新建与合并

    转载自:https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB ...

  3. Go语言之闭包

    闭包的最初目的是为了减少全局变量,在函数调用过程中,隐式的传递共享变量. 但这样的编辑,带来的坏处是不够直接清晰. 所以,如非必要,不要使用. 对象是附有行为的数据,它在类中集中定义, 而闭包是附有数 ...

  4. Java连接MySQL数据库三种方法

    好久没有更新博客了!今天利用周目时学习了一下数据库mysql.介绍一下数据库的三种连接方式! 开发工具:Myeclipse MySQL5.6 MySQL连接驱动:mysql-connector-jav ...

  5. JavaScript学习:取数组中最大值和最小值

    在实际业务中有的时候要取出数组中的最大值或最小值.但在数组中并没有提供arr.max()和arr.min()这样的方法.那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最 ...

  6. CentOS6.9安装socat

    yum -y install epel-release yum -y install socat

  7. rabbitmq更换数据文件和日志文件的存放位置

    原来的默认位置是/var下 需要将这些文件更换位置 1.先创建数据文件和日志文件存放位置的目录并给权限 mkdir -p /usr/local/rabbitmq/mnesia mkdir -p /us ...

  8. 修改tomcat的默认访问日志信息

    修改前:

  9. js根据银行卡号进行判断属于哪个银行并返回银行卡类型

    在做绑定银行卡,输入银行卡的时候,产品有这么一个需求,需要用户输入银行卡号的时候,显示对应的银行卡名称及简称.于是苦苦寻觅,终于找到了支付宝的开放API,银行卡校验接口 https://ccdcapi ...

  10. debian9 开启rc.local服务

    由于某些软件并没有增加开启启动的服务,很多时候需要手工添加,一般我们都是推荐添加命令到 /etc/rc.local 文件,但是 Debian 9 默认不带 /etc/rc.local 文件,而 rc. ...